您好,我有以下问题,我有一组来自不同事件的日期,我想将它们与特定日期进行比较。
对于日期类型,Javascript支持比较运算符>, <, ===, !==, >=, <=
来比较整个日期,包括日期和时间,这是正确的,但这是我的问题出现的地方,因为我只需要比较日期而不考虑时间。
我用一个简单的例子简化了这个问题:
let inicio = new Date('2017-09-06T20:56:51');
let fin = new Date('2017-09-06T20:56:53');
// fecha a comparar si se encuentra en el rango
let comparador = new Date('2017-09-06T12:56:53');
// aqui es el problema
let resultado = inicio <= comparador && fin >= comparador
如果您仅通过省略时间的日期进行比较,resultado
它将返回true
.
知道一天是 24 * 3600 * 1000 毫秒,您可以取每个日期的 UNIX 时间值来获取自起源以来的天数,忽略其余部分(小数):
比较器函数遵循标准:如果第一个参数大于第二个,则返回 1,如果相等,则返回 0,如果第二个参数大于第一个,则返回 -1
Javascript 中有几种方法可以让您“拆分”日期,也就是说,它会向您发送一个整数数值。我想到的是你做了 3 次比较:首先是年份,然后是月份,最后是日期。我给你一个例子,取自https://www.w3schools.com/js/js_date_methods.asp
我希望我对您有所帮助。问候。
我在想一个更长的答案,但我认为对你的问题来说最简单的事情是将小时数设为 0。这样你就只会像你所说的那样比较“日期”。
创建
Date
只使用 Y/m/d 然后比较,你仍然会遇到情况 == , === , !=, !== 解决方法是在比较时在变量前面添加“+”,像这样:更改更多测试的日期。
符号
+
是必要的,因为它们Date
是对象并且在严格比较中永远不可能相等,放置+a == +b
等于放置a.valueOf() == b.valueOf()
我希望它对你有用,祝你好运