在一个场景中,用户可以选择日期("来自" 日期)以及当前日期(" 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;
显然,使用==
直接比较它存在问题。那么什么是最好的选择呢?如果我们有几个(不仅仅是两个)日期会有什么不同吗?
同样比较new Date("02-21-2018") <= new Date()
这样的两个日期时,时区会影响结果吗?
答案 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”的影响。