Javascript 日期(dateString)构造函数不一致? a=新日期('09-01-2013') //2013年9月1日星期日00:00:00 GMT-0400(美国东部时间) b=新日期('2013-09-01') //2013年8月31日星期六20:00:00 GMT-0400(美国东部时间) b
我在Node.js repl,v0.10.12中做了这件事 为什么日期根据日期字符串的形式不同Javascript 日期(dateString)构造函数不一致? a=新日期('09-01-2013') //2013年9月1日星期日00:00:00 GMT-0400(美国东部时间) b=新日期('2013-09-01') //2013年8月31日星期六20:00:00 GMT-0400(美国东部时间) b,javascript,node.js,date,Javascript,Node.js,Date,我在Node.js repl,v0.10.12中做了这件事 为什么日期根据日期字符串的形式不同 我看不出这与时区有什么关系,因为这两个日期都显示在本地时区,而且它们的值显然不相等。问题在于新日期('09-01-2013')和新日期('2013-09-01')使用不同的格式/标准,因此解析方式也不同 新日期('09-01-2013')按照您的预期进行解析,结果为午夜时间(在您的本地时区)。但是,新日期('2013-09-01')在UTC午夜被解析为ISO-8601日期,UTC午夜在显示时转换为您的
我看不出这与时区有什么关系,因为这两个日期都显示在本地时区,而且它们的值显然不相等。问题在于
新日期('09-01-2013')
和新日期('2013-09-01')
使用不同的格式/标准,因此解析方式也不同
新日期('09-01-2013')
按照您的预期进行解析,结果为午夜时间(在您的本地时区)。但是,新日期('2013-09-01')
在UTC午夜被解析为ISO-8601日期,UTC午夜在显示时转换为您的本地时区(在本例中,EDT反映在20:00:00
中,相差4小时)
结论:使用
YYYY/MM/DD
以避免头痛。ctor应以a格式接收(如果正确或不正确解析,则应将任何其他格式视为方便)
a = new Date('09-01-2013')
//Sun Sep 01 2013 00:00:00 GMT-0400 (EDT)
b = new Date('2013-09-01')
//Sat Aug 31 2013 20:00:00 GMT-0400 (EDT)
b < a
//true