Loading...
zappabg avatar zappabg 2 Точки

1000 Days After Birth Защо решението не ми се зачита в Judge

Здравейте, това е всъщност първата програма, която пускам да се провери. Отне ми доста време, но накрая получих отговора. Решавах го дори в HTML вариант и само като JS.

Вход: 30-12-2002  Изход: 24-09-2005

Кодът ми е:

var birthday = new Date ("2002-12-30");
var bDay = birthday.getDate();
var bMonth = birthday.getMonth() + 1;
var bYear = birthday.getFullYear();
var myDate = "Birthday is on " + bDay +"-"+bMonth+"-"+bYear;

var newDate = new Date(birthday.setMilliseconds(999*24*60*60*1000));
var newDay = newDate.getDate();
if (newDay < 10){
    newDay = "0" + newDay;
}
var newMonth = newDate.getMonth() +1 ;
if (newMonth < 10){
     newMonth = "0" + newMonth;
}
var newYear = newDate.getFullYear();

newDays = "1000 days from birthday will be " + newDay+"-"+newMonth+"-"+newYear;

console.log(myDate);
console.log(newDays);

 

Тагове:
0
JavaScript Fundamentals
willystyle avatar willystyle 2472 Точки

Решението се обвива във функция, аргументите са входните данни.

Ти тук си си хардкорнал входа :) така ли го пускаш?

0
BoYaN avatar BoYaN 336 Точки

Здравей,
първо никога повече по никакъв повод не декларирай променливи с var !

Правилно си тръгнал да ползваш Date, но може да пробваш да си вземаш датата с getUTCDate() вместо с getDate().

0
zappabg avatar zappabg 2 Точки

Здравейте, благодаря за насоките. До тук го редактирах код. В конзолата ми показва верният отговор, но все още не го зачита. Сигурно ми обягва логиката.

function newDay(str) {
    let birthday = new Date(str);
    let newDate = new Date(birthday.setMilliseconds(999 * 24 * 60 * 60 * 1000));
    let newDay = newDate.getUTCDate();
    if (newDay < 10) {
        newDay = "0" + newDay;
    }
    let newMonth = newDate.getUTCMonth() + 1;
    if (newMonth < 10) {
        newMonth = "0" + newMonth;
    }
    let newYear = newDate.getUTCFullYear();

    console.log(newDay + "-" + newMonth + "-" + newYear);
}
newDay("2002-12-30");

премахнах първата част от предният вариант, защото мисля, че не е част от решението. Бях го направил по-скоро за помощ.

0
knoteva avatar knoteva 1081 Точки

Здравей,

1. Виж как judge ти подава датата: [ '25-02-1995' ]. Попаднах на това(не много красиво нещо  в google), но работи: let birthday = new Date(str[0].replace( /(\d{2})-(\d{2})-(\d{4})/, "$2/$1/$3")); Със сигурност има и други варианти.

2. let newDay = newDate.getUTCDate(); трябва да е let newDay = newDate.getUTCDate() +1;

0
zappabg avatar zappabg 2 Точки

Здравей,

1. Сега ис спомних, че направих гимнастиката с козолата, защото не успях да се справя с формата, който е даден: dd-MM-yyyy. Първите ми опити да ползвам този формат не ми даваха верни дати.

Това означава, че трябва да се поровя по-задълбочено как да използвам този формат. Сигурно за това не ми зачита решението.

2. Защо добавяш 1 към деня? Стойностите са от 1 до 31. Не като при месеците. Или пропускам нещо?

Благодаря!

0
knoteva avatar knoteva 1081 Точки

Изглежда, че при това превръщане връща дните с един по-малко.

0
zappabg avatar zappabg 2 Точки

Най-накрая прогрес :D - 20/100

function addDays() {

    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 birthday = new Date('1995-02-25');
    return formatDate(new Date(birthday.setDate(birthday.getDate() + 1000)));
}

Борбата продължава :)

0
Stradjazz avatar Stradjazz 30 Точки

Мъча го от 4 дни и постът е отпреди няколко месеца, но... този код минава на 100/100

https://pastebin.com/aG22vJJt

function calculateDates([arg1]){
    let input = arg1;
    let inputArray = input.split('-');
    let dd = inputArray[0];
    let mm = inputArray[1];
    let yyyy = inputArray[2];
    
    let inputFormat = yyyy + "," + mm + "," + dd;
    
    let inputDate = new Date(inputFormat);
    
    let newDate = new Date(inputDate.setDate(inputDate.getDate() + 1000)); 
    dd = newDate.getDate();
    if(dd < 10){
        dd = "0" + dd;
    }
    mm = newDate.getMonth() + 1;
    if(mm < 10){
        mm = "0" + mm;
    }
    console.log(dd + "-" + mm + "-" + newDate.getFullYear());
}

calculateDates(["05-05-1995"]);

 

0
07/11/2019 18:48:08
TeodorStefanovPld avatar TeodorStefanovPld 1274 Точки

не че нещо но защо по дяволите в js  ползвате var? Или не слушате какво ви се говори или така ви учат wtf

-4
Stradjazz avatar Stradjazz 30 Точки

защото навсякъде кода, който чета е с var, включително в StackOverflow и лекциите. Какво да използваме? let?

Много по-лесно ще е ако се даде някакво пояснение от типа на: в Джаваскрипт не се използва вар за променлива, защото..... Вместо това е препоръчителна употребата на.... защото......

Всичко останало е:

- Това не е така!

- Защо?

- Защото аз ти казвам!

- @№$€%@@!

По самото решение и задачата можеш ли да ми кажеш дали е ок? Дотук не видях голяма блъсканица с предложения как да се реши, освен оригиналният пост, който явно е имал проблеми

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