比较多个日期的强大方法

时间:2018-02-21 11:59:44

标签: javascript datetime

在一个场景中,用户可以选择日期("来自" 日期)以及当前日期(" to" 日期),比较多个(至少两个)日期的最佳方式是什么?

假设传入日期是格式为MM-DD-YYYY的字符串,请考虑以下比较:



a = new Date("02-21-2018")   // user "from" date
b = new Date()               // current "to" date
b = b.setHours(0,0,0,0)      // trim the time to compare just the dates
b = new Date(b)              // converting back to the Date type

console.log("- :", a - b)                            // 0     (correct)
console.log("== :", a == b)                          // false (wrong)
console.log("<= :", a <= b)                          // true  (correct)
console.log(">= :", a >= b)                          // true  (correct)
console.log("value :", a.valueOf() == b.valueOf())   // true  (correct)
&#13;
&#13;
&#13;

显然,使用==直接比较它存在问题。那么什么是最好的选择呢?如果我们有几个(不仅仅是两个)日期会有什么不同吗?

同样比较new Date("02-21-2018") <= new Date()这样的两个日期时,时区会影响结果吗?

1 个答案:

答案 0 :(得分:0)

您需要在日期对象上使用.getTime()方法 检查日期对象上的相等性不起作用。

a = new Date("02-21-2018")   // user "from" date
b = new Date()               // current "to" date
b = b.setHours(0,0,0,0)      // trim the time to compare just the dates
b = new Date(b)              // converting back to the Date type
a = a.getTime();
b = b.getTime();

console.log("- :", a - b)
console.log("== :", a == b)
console.log("<= :", a <= b)
console.log(">= :", a >= b)
console.log("value :", a.valueOf() == b.valueOf())

这是一个类似的主题:
Compare two dates with JavaScript

关于时区,
我不确定你想做什么,但是:
可以在日期对象上使用方法.getTimezoneOffset()来返回其偏移量 当javascript在您的计算机上的浏览器中运行时,我猜您的new Date()的时区会受到“TimezoneOffset”的影响。