2016-03-30 12 views
5

Moje oczy muszą mnie zwodzić, ale kiedy zadzwonię pod numer setMonth(1), czy datą tego obiektu daty nie powinien być luty? (Dzisiaj jest 30 marca 2016)Data JavaScript wygląda źle po zmianie miesiąca

x = new Date(); 
y = new Date(); 
x.setMonth(1); 

document.write(x.toString() + '<br>' + y.toString()); 

Wyniki w:

+0

Adam - ten kod zakończy się dopiero dzisiaj (ze wszystkich dni) Zamiast tego możesz zaktualizować swój post, aby poinformować, że dzisiaj jest 30 marca 2016 r., A następnie zrobić zrzut ekranu e wyniki. – Neal

+0

Po wskazaniu myszką daty niewyraźne, można zobaczyć dokładny czas utworzenia postu. – alex

+0

Te dwa tematy dotyczące sprawdzania poprawności daty javascript mogą być pomocne: http://stackoverflow.com/questions/6177975/how-to-validate-date-with-format-mm-dd-yyyy-in-javascript i http: // stackoverflow.com/questions/1353684/detecting-an-invalid-date-date-instance-in-javascript?lq=1 –

Odpowiedz

10

Nie ma 30 luty, 2016

dlatego więc procesor data poprawnie zmienia termin do 1 marca , 2016

+0

Wystarczy spojrzeć na [specyfikację tego] (http://www.ecma-international.org/ ecma-262/6.0/# sec-makeday) _ "7. Znajdź wartość t taką, że ..." _ - to raczej niejasne :) –

+0

Hmmm? Co masz na myśli @JamesThorpe? – Neal

+0

Nie określa sposobu znalezienia tej wartości - zwykle jest ona dość specyficzna dla takich algorytmów - po prostu pozostawia ją całkowicie do wdrożenia. Wydawało się nie na miejscu, zwłaszcza, gdy następny krok jest bardzo specyficzny: _ "Dzień powrotu (t) + dt - 1" _. –

Powiązane problemy