鉴于
var fromDatetime =“10/21/2014 08:00:00”;
var toDatetime =“10/21/2014 07:59:59”;
目标
需要比较这两个给定的日期时间以检查这是否是有效的日期时间输入。
我想我可以使用这个解决方案。 。
var fromDatetime = new date(“10/21/2014 08:00:00”);
var toDatetime =新日期(“10/21/2014 07:59:59”);
然后比较每个段
fromDatetime.getFullYear()to toDatetime.getFullYear(),
fromDatetime.getMonth()到toDatetime.getMonth(),
等等,直到我得到一个不相等的比较,然后返回。
我的问题是。 。 这是比较Javascript中的日期时间的最佳情况吗?
除此之外的任何建议的解决方案将非常感谢。 。 先感谢您。
答案 0 :(得分:4)
如果您只需要知道一个日期是在另一个日期之前还是之后,您可以使用常规比较运算符:
if (dateA > dateB) { ... }
(请注意,要实例化Date对象,它是new Date(myDateString)
,而不是示例中的new date()
。)
这是有效的,因为Date对象将被强制转换为基础纪元值,这些值只是表示自1970年1月1日GMT以来经过的毫秒数的数字。 (关系比较使用操作数'@@toPrimitive
或valueOf()
函数的结果(如果可用)。)因此,这将敏感到毫秒,这可能是也可能不是。您可以通过确保输入仅包含最多小时/分钟/任何OR的值来控制比较的粒度,方法是通过您在问题中描述的零碎比较。
对于更高级的日期比较操作,我强烈建议使用像Moment.js这样的库,因为原本没有太多可用的工具。例如,Moment提供了类似
的方法moment(myDateString).startOf('hour')
如果您只需要在特定的特异性水平进行比较,这将非常有用。但是没有一个日期时间库非常轻量级,所以只有在你使用服务器端代码或者你希望广泛依赖它们时才使用它们。如果您只需要进行一次比较,那么推出自己的解决方案会更明智。