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

9

给定
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 = new Date("10/21/2014 07:59:59");

然后逐个比较每个部分
fromDatetime.getFullYear() 到 toDatetime.getFullYear(),
fromDatetime.getMonth() 到 toDatetime.getMonth(),
依此类推,直到得到不相等的比较,然后返回。

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

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


比较所要确定的内容将影响回答您的问题。您只需要知道日期是否不同吗?其中一个日期是否比另一个早?您是否需要考虑时区? - Semicolon
可能是重复的问题?使用JavaScript比较日期https://dev59.com/PnRB5IYBdhLWcg3w1Kv0 - user4164128
我需要知道日期是否不同,同时也需要知道最佳的方法。关于时区,这不是必需的,但假设给定的时间都在同一个时区设置下。 - Sata
1个回答

13

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

if (dateA > dateB) { ... }
请注意,要实例化日期对象,应使用new Date(myDateString),而不是您示例中的new date()
这是因为日期对象将被强制转换为底层时代值,这些值仅是表示自1970年1月1日GMT以来过去的毫秒数的数字。 (如果可用,关系比较使用操作数的@@toPrimitivevalueOf()函数的结果。)因此,这将对毫秒级别敏感,这可能是需要也可能不需要的。 您可以通过确保输入仅包括小时/分钟/任何时间值的值或者像您在问题中描述的方式一样进行逐步比较来控制比较的粒度。
对于更高级的日期比较操作,我强烈建议使用像Moment.js这样的库,因为本地没有太多可以使用的内容。例如Moment提供了诸如...的方法。
moment(myDateString).startOf('hour')

如果您只需要在特定级别进行比较,那么datetime库可以非常有帮助。但是这些库都不是很轻量级的,因此只有在进行服务器端代码或者期望大量依赖它们时才使用它们。如果您只需要进行一次比较,那么编写自己的解决方案可能会更明智。


非常感谢您,先生。 - Sata

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接