Loading...
Thedi avatar Thedi 200 Точки
Best Answer

Здравей,

Не знам това колко е добре описано за начинаещи, но се надявам да разбереш коментарите ми.

Входът ни е масив с примерна дата "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.

Ако имаш още въпроси ще се радвам да ти помогна.

2
13/02/2018 23:07:35
Angelovasilviya avatar Angelovasilviya 3 Точки

Благодаря ти много! Много изчерпателен отговор! Отново благодаря!!!

 

0
zappabg avatar zappabg 2 Точки

Здравей Теди, кода ти е страхотен. И много подробно си го обеснил. Но как разбираме, че получаваме датата като масив?

 

Би ли погледнал моят код и да ми кажеш дали съм бил близо до решението?

Понеже в judge получената дата е с еден по-голяма от изисканата в задачата съм добавил 1 ден (+1000).

Накрая забелязах, че всъщност имам проблем с получаването на датата към фунцията. Приема ми я като математически израз. Кка мога да поправя това?

 

function addDays(x) {

    function formatDate(date) {
        let dd = date.getDate();
        let MM = date.getMonth() + 1;
        let yyyy = date.getFullYear();
        if (dd < 10) {
            dd = '0' + dd;
        }
        if (MM < 10) {
            MM = '0' + MM;
        }
        return dd + '-' + MM + '-' + yyyy;
    }

    let y = new Date(x);
    console.log(formatDate(new Date(y.setDate(y.getDate() + 1000))));
}

 

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.