Domanda

Le mie impostazioni internazionali sono:

Data breve formato: gg / mm / aaaa, Data estesa formato gg MMMM aaaa

Allora perché

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

vomitare 10 Ago 2009

o

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

vomitare 10 Marzo 2010

È stato utile?

Soluzione

Se il sistema ottiene il 10 agosto dalle data dovrebbe essere ovvio, anche se non si ottiene ancora perché. Ma è meno facile capire come si possa "10 MARZO 2010" da "15/10/2009". Quindi, nel caso in cui ve lo siate perso:

Si supponga per un momento l'oggetto Date ha già deciso che sta utilizzando un formato "M / g / y", in modo che la prima parte (15) è il mese. Come sarebbe gestire questo? Quello che succede è che inizia con l'anno e costruisce la data "1/1/2009". Si avanza quindi al 15 ° mese, per darvi marzo del 2010. Aggiungere i 10 giorni e ci si va.

Per il "perché" di esso, si noti che si doveva chiamare toLocaleDateString() per farlo uscita nel vostro formato particolare locale. Ma il vostro new Date() non fa alcuna menzione di simile da nessuna parte locale. Quindi è solo usando il suo invariante cultura built-in.

Altri suggerimenti

Prova a modificare.

var myDate=new Date();
myDate.setFullYear(2010,0,14);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top