2016-12-29 58 views
0
var date1 = new Date("Dec 29, 2016"); 
var date2 = new Date("2016-12-29"); 

console.log(date1); 
//This prints "Thu Dec 29 2016 00:00:00 GMT-0500 (EST)" 
console.log(date2); 
//This prints "Wed Dec 28 2016 19:00:00 GMT-0500 (EST)" 

console.log(date1 == date2); 
//Prints false 

如何在上述代码中正确解析日期,以便两个日期相等。如何在Javascript中正确解析日期?

看起来像date2对象没有按照我想要的方式正确创建。我该如何纠正?

+0

[比较两个使用JavaScript日期]的可能的复制(http://stackoverflow.com/questions/492994/compare-two-dates-with-javascript) –

+1

解析字符串不建议根据[MDN上的注释](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse) - 它建议手动解析它(或使用库) – UnholySheep

+0

@ J.Titus-这是关于解析日期,而不是比较它们。 – RobG

回答

2

下面是日期的文档的解释:

注:与Date构造函数的日期字符串(和Date.parse,它们是相同的)的解析是强烈反对,由于浏览器的差异和矛盾。仅支持RFC 2822格式字符串。 对ISO 8601格式的支持因日期不同而不同(例如“1970-01-01”)被视为UTC,而不是本地。

解析正确发生,但在第二个示例中,时间被视为UTC,然后在12月28日转到您的本地时区。

更多的相关信息: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

+1

良好的信息,但它并没有真正回答这个问题:如何在JavaScript中正确解析日期。 ;-) – RobG

+0

日期被正确解析。结果是意想不到的。 –