1000 дни на Земята
Здравейте!
Някой може ли да ми каже как се решава тази задача с Javascript с разбираем за начинаещ код?
Благодаря!
Здравейте!
Някой може ли да ми каже как се решава тази задача с Javascript с разбираем за начинаещ код?
Благодаря!
Здравей,
Не знам това колко е добре описано за начинаещи, но се надявам да разбереш коментарите ми.
Входът ни е масив с примерна дата "25-02-1995" за да я вземем ние взимаме от входа първата стойност [0]. След което ние за да създадеме Дата в миналото ни трябват деня, месеца и годината за това разделяме Входната Дата (25-02-1995) на тиренца. И всяка от стойностите между тези тирета я записваме в съответната променлива.
let [day, month, year] = dateArray[0].split("-");
Тук вече създаваме Дата която е в имналото с данните който имаме от горнат астъпка. Заради особености който има Javascript трябва да извадим 1 месец от месеца който искаме да създадем.
let birthDate = new Date(year, month - 1, day);
Пресмятаме колко милисекунди се садържат в 1000 дена за да можем да ги добавим.
let thousandDays = (24 * 60 * 60 * 1000) * 1000;
Създаваме Дата която е съставена от Рождената Дата (birthDate) сумирано с милисекундите отговарящи за 1000 дена който сметнаха на предния ред.
let futureDate = new Date(birthDate.getTime() + thousandDays);
За да можем да форматираме изхода по начин по който изисква judge първо взимаме датата която имаме и я форматираме в формат наречен JSON, но понеже това би ни изкарало дата (2006-08-02T22:00:00.000Z) в която има и Часове, Минути, Секунди и милисекунди, а ние не искаме това режем първите 10 символа което е (2006-08-02) и съответно взимаме нужната информация по отделно (Както направихме на първият ред от задачата с тирето) за да можем да форматираме накрая.
let [futureYear, futureMonth, futureDay] = futureDate.toJSON().slice(0, 10).split('-');
Вече имаме всичката информация която ни трябва и я изкараваме във формата който се изисква (Ден-Месец-Година).
console.log(`${futureDay}-${futureMonth}-${futureYear}`);
Целия код без коментарите:
function solution(dateArray) {
let [day, month, year] = dateArray[0].split("-");
let birthDate = new Date(year, month - 1, day);
let thousandDays = (24 * 60 * 60 * 1000) * 1000;
let futureDate = new Date(birthDate.getTime() + thousandDays);
let [futureYear, futureMonth, futureDay] = futureDate.toJSON().slice(0, 10).split('-');
console.log(`${futureDay}-${futureMonth}-${futureYear}`);
}
Целия код с коментарите - https://pastebin.com/QM9dAQTp
Реално това което учите в момента е native javascript и той не е много добър с Датите и за това има доста библиотеки и помощни средства който правят това нещо доста по-лесно, но за момента вие се учите на чист JavaScript.
Ако имаш още въпроси ще се радвам да ти помогна.
Благодаря ти много! Много изчерпателен отговор! Отново благодаря!!!
Здравей Теди, кода ти е страхотен. И много подробно си го обеснил. Но как разбираме, че получаваме датата като масив?
Би ли погледнал моят код и да ми кажеш дали съм бил близо до решението?
Понеже в judge получената дата е с еден по-голяма от изисканата в задачата съм добавил 1 ден (+1000).
Накрая забелязах, че всъщност имам проблем с получаването на датата към фунцията. Приема ми я като математически израз. Кка мога да поправя това?