JS日期比较如何工作?

wwa*_*waw 7 javascript comparison date

让我们假设我有一个Date从字符串构造的适当对象:"Tue Jan 12 21:33:28 +0000 2010".

var dateString = "Tue Jan 12 21:33:28 +0000 2010";
var twitterDate = new Date(dateString);
Run Code Online (Sandbox Code Playgroud)

然后我使用<> 小于大于比较运算符来查看它是否比类似构造的更新或更新Date.是使用指定的运算符比较日期的算法,还是具体未指定,如localeCompare?换句话说,我保证会以这种方式获得更近的约会吗?

var now = new Date();
if (now < twitterDate) {
    // the date is in the future
}
Run Code Online (Sandbox Code Playgroud)

Den*_*ret 7

ECMAScript中对象的关系操作依赖于内部ToPrimitive 函数(带提示号),您可以使用valueOf在定义时访问它.

尝试

var val = new Date().valueOf();
Run Code Online (Sandbox Code Playgroud)

您将获得日期的内部值,就像在许多语言中一样,自UTC 1970年1月1日午夜以来的毫秒数(与您将使用的相同getTime()).

这意味着,您可以确保始终正确地使用日期比较.

本文将为您提供更多详细信息toPrimitive(但与比较无关).