如何在Javascript中比较日期时间?

Sat*_*ata 5 javascript comparison datetime

给定
var fromDatetime =“ 10/21/2014 08:00:00”;
var toDatetime =“ 2014/10/21 07:59:59”;

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

我认为我可以使用此解决方案。。
var fromDatetime =新日期(“ 10/21/2014 08:00:00”);
var toDatetime =新日期(“ 10/21/2014 07:59:59”);

然后将每个段
fromDatetime.getFullYear()与toDatetime.getFullYear(),
fromDatetime.getMonth()与toDatetime.getMonth()
进行比较,依此类推,直到得到不相等的比较,然后返回。

我的问题是。。那是比较Javascript中的日期时间的最佳案例吗?

除此以外的任何建议解决方案将不胜感激。。先感谢您。

Sem*_*lon 9

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

if (dateA > dateB) { ... }
Run Code Online (Sandbox Code Playgroud)

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

这是有效的,因为 Date 对象将被强制为底层的 epoch 值,这些值只是表示自 1970 年 1 月 1 日格林威治标准时间以来经过的毫秒数的数字。(关系比较使用操作数@@toPrimitivevalueOf()函数的结果(如果可用)。)因此,这将敏感到毫秒,这可能是也可能不需要。您可以通过确保输入仅包含最高达小时/分钟/任何内容的值或通过像您在问题中描述的那样进行零碎比较来控制比较的粒度。

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

moment(myDateString).startOf('hour')
Run Code Online (Sandbox Code Playgroud)

如果您只需要在特定的特定级别进行比较,这将非常有用。但是没有一个 datetime 库是非常轻量级的,因此只有在您执行服务器端代码或希望广泛依赖它们时才使用它们。如果您只需要进行这一比较,那么推出自己的解决方案会更明智。