如何在Javascript中比较日期时间

How to compare datetime in Javascript?

本文关键字:比较 日期 时间 Javascript      更新时间:2023-09-26

给定
var fromDatetime="2014年10月21日08:00:00"
var toDatetime="10/21/2014 07:59:59";

目标
需要比较这两个给定的日期时间,以检查这是否是有效的日期时间输入。

我想我可以用这个解决方案
var fromDatetime=新日期("2014年10月21日08:00:00")
var toDatetime=新日期("10/21/2014 07:59:59");

然后比较每个片段
从Datetime.getFullYear()到Datetime.geFullYear),
从Datetime.getMonth()到Datetime.get-Month(,
依此类推,直到我得到一个不相等的比较,然后返回。

我的问题是..在比较Javascript中的日期时间时,这是最好的情况吗

除此之外,任何建议的解决方案都将不胜感激。提前谢谢。

如果你只需要知道一个日期是在另一个日期之前还是之后,你可以使用普通的比较运算符:

if (dateA > dateB) { ... }

(请注意,要实例化Date对象,它是new Date(myDateString),而不是示例中的new date()。)

这是因为Date对象将被强制为基础epoch值,这些值只是表示自1970年1月1日GMT以来经过的毫秒数的数字。(关系比较使用操作数的@@toPrimitivevalueOf()函数(如果可用)的结果。)因此,这将对毫秒敏感,这可能是所需的,也可能不是所需的。您可以通过确保输入只包括小时/分钟/任何值来控制比较的粒度,也可以像您在问题中描述的那样进行逐段比较。

对于更高级的日期比较操作,我强烈建议使用Moment.js这样的库,因为在本机中没有太多可操作的内容。例如,Moment提供了类似的方法

moment(myDateString).startOf('hour')

如果你只需要在特定的特异性水平上进行比较,这会非常有帮助。但是,没有一个日期时间库是非常轻量级的,所以只有当您正在编写服务器端代码或希望广泛依赖它们时,才能使用它们。如果你只需要做一次比较,那么推出自己的解决方案会更明智。