我的本地設置:JavaScript格式日期奇怪
短日期格式:DD/MM/YYYY,長日期格式DD MMMM YYYY
那麼,爲什麼
var d = new Date("8/10/2009")
alert(d.toLocaleDateString());
吐了8月10日2009年
或
var d = new Date("15/10/2009");
嘔吐2010年3月10日
我的本地設置:JavaScript格式日期奇怪
短日期格式:DD/MM/YYYY,長日期格式DD MMMM YYYY
那麼,爲什麼
var d = new Date("8/10/2009")
alert(d.toLocaleDateString());
吐了8月10日2009年
或
var d = new Date("15/10/2009");
嘔吐2010年3月10日
系統得到8月10日的日期應該是顯而易見的,即使你還沒有得到原因。但從「15/10/2009」開始,「2010年3月10日」的理解起來並不容易。所以如果你錯過了它:
假設一會兒Date對象已經決定使用「M/d/y」格式,所以第一部分(15)是月份。它將如何處理?會發生什麼是它從今年開始並建立日期「2009年1月1日」。然後進入第15個月,給你2010年3月。添加10天,你去了。
對於「爲什麼」,請注意,您必須致電toLocaleDateString()
才能以特定區域設置格式輸出。但是你的new Date()
在任何地方都沒有提到類似的區域設置。所以它只是使用它不變的內置文化。
試試這個。
var myDate=new Date();
myDate.setFullYear(2010,0,14);
實際上我在做var myDate = new Date(el.value),所以這裏不是一個好的選擇。 – user48408 2009-10-08 15:59:04
但是,如果我的語言環境日期格式是dd/mm/yyyy,我認爲新日期(「8/10/2009」)會在2009年10月8日輸出.tolocaleDateString()時調用(?) – user48408 2009-10-08 15:58:08
new Date()單獨的表達式,並不關心你在其他地方使用過的LocaleDateString()。 – 2009-10-08 16:03:38
如此新的日期()自動採用美國日期格式。有點種族歧視是不是 – user48408 2009-10-08 16:13:00