Javascript格式化日期奇怪

时间:2009-10-08 15:36:03

标签: javascript date-format

我的区域设置是:

短日期格式:dd / mm / yyyy,长日期格式dd MMMM yyyy

为什么

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

2009年8月10日呕吐

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

2010年3月10日呕吐

2 个答案:

答案 0 :(得分:3)

系统从8月10日开始的日期应该是显而易见的,即使你还没有明白原因。但是,从“2009年10月10日”开始,它不太容易理解它是如何“2010年3月10日”的。所以如果你错过了它:

假设Date对象已经决定使用“M / d / y”格式,因此第一部分(15)是月份。它会如何处理?会发生什么,它从年份开始,并建立日期“1/1/2009”。它然后进入第15个月,给你2010年3月。加上10天,然后你去。

对于它的“为什么”,请注意您必须调用toLocaleDateString()才能以特定的语言环境格式输出它。但是你的new Date()在任何地方都没有类似的提及。所以它只是使用它不变的内置文化。

答案 1 :(得分:1)

试试这个。

var myDate=new Date();
myDate.setFullYear(2010,0,14);