JavaScript: Vorherige 12 Monate drucken - "March" druckt zweimal?

7

Ich versuche ein Skript zu schreiben, das die Namen der letzten 12 Monate ausgibt. Da dieser Monat Januar ist, sollte es gedruckt werden: Dezember November Oktober September August Juli Juni Kann April März Februar Januar

Stattdessen druckt es den März zweimal. Ссылка

November Oktober September August Juli Juni Kann April März März Februar

HTML

%Vor%

Javascript

%Vor%

Was mache ich falsch?

    
Tyler 29.01.2015, 19:40
quelle

4 Antworten

13

Schöne! Nahm mich eine Weile.

Der Grund dafür ist, dass heute der 29. ist. Da Ihr Datumsobjekt implizit auf den aktuellen Tag eingestellt ist und der Februar 2013 nur 28 Tage hatte, wird März zweimal gedruckt. Korrigieren Sie dies, indem Sie den optionalen Parameter day festlegen:

%Vor%     
aaronk6 29.01.2015, 19:48
quelle
3

Das liegt daran, dass heute der 29. Tag ist, und wenn Sie den 29. Februar erreichen, wird es in den März übergehen.

Stellen Sie das Datum auf das erste (oder ein anderes Datum, das kleiner als 29 ist), dann funktioniert es für alle Monate:

%Vor%

Demo: Ссылка

    
Guffa 29.01.2015 19:48
quelle
2

Ich glaube nicht, dass es einen Grund für Antworten gibt, die ein Date-Objekt bei jeder Iteration manipulieren. Sobald wir den aktuellen Monat kennen, müssen wir die Liste nur noch rückwärts durchlaufen und am Ende umhüllen. Das ist ein Job für % . Leider führt % keine echte mathematische mod -Operation durch und kann einen negativen Wert zurückgeben, so dass die einfachste Implementierung darin besteht, sicherzustellen, dass der Wert positiv ist, indem weitere 12 hinzugefügt werden:

%Vor%

( JSFiddle )

    
Scott Sauyet 29.01.2015 21:31
quelle
1

Probieren Sie Ссылка aus:

%Vor%     
hattman 29.01.2015 21:31
quelle

Tags und Links