Frage

Meine Locale-Einstellungen sind:

Kurzdatumsformat: tt / mm / jjjj, Langes Datumsformat dd MMMM yyyy

Warum also

var d = new Date("8/10/2009")
alert(d.toLocaleDateString()); 

erbrechen 10. August 2009

oder

var d = new Date("15/10/2009");

erbrechen 10. März 2010

War es hilfreich?

Lösung

Wenn das System aus dem 10. August Datum wird sollte klar sein, auch wenn Sie, warum noch nicht bekommen. Aber es ist nicht so leicht zu verstehen, wie es „10. März 2010“ von „15/10/2009“ bekommt. Also, falls Sie es verpasst haben:

Nehmen wir für einen Moment das Date-Objekt hat bereits entschieden, es mit einem „M / d / y“ Format, so das der erste Teil (15) ist der Monat. Wie wäre es damit umgehen? Was passiert, ist, dass es mit dem Jahr beginnt und baut das Datum „1.1.2009“. Es geht dann bis zum 15. Monat, um Ihnen März 2010 die 10 Tage hinzufügen und los geht.

Für das „Warum“ davon bemerken, dass Sie toLocaleDateString() zu nennen hatte es in Ihrem speziellen locale-Format Ausgabe zu erhalten. Aber Ihre new Date() machen keine ähnliche Erwähnung locale überall. So ist unter Verwendung sie es nur die invariant eingebaut in der Kultur.

Andere Tipps

Versuchen Sie stattdessen.

var myDate=new Date();
myDate.setFullYear(2010,0,14);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top