0

我的语言环境设置是:

短日期格式 : 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 日

4

2 回答 2

3

系统从何处获取 8 月 10 日的日期应该很明显,即使您还不知道原因。但是要理解它是如何从“2009 年 10 月 15 日”变成“2010 年 3 月 10 日”的就不那么容易了。因此,如果您错过了它:

暂时假设 Date 对象已经决定它使用“M/d/y”格式,所以第一部分 (15) 是月份。它将如何处理?发生的情况是它从年份开始并建立日期“2009 年 1 月 1 日”。然后它前进到第 15 个月,给您 2010 年 3 月。加上 10 天,就可以了。

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

于 2009-10-08T15:45:00.470 回答
1

试试这个。

var myDate=new Date();
myDate.setFullYear(2010,0,14);
于 2009-10-08T15:38:15.757 回答