如何在javascript中比较UTC时间

Posted

技术标签:

【中文标题】如何在javascript中比较UTC时间【英文标题】:how to compare UTC times in javascript 【发布时间】:2017-02-08 05:40:32 【问题描述】:

背景信息

我有代表 UTC 开始和结束时间的值,这些值从数据库查询返回给我并存储在如下数组中:

 [ '9145001323', '08:00', '12:00' ]

数组中的第二个和第三个值实际上分别代表开始时间和结束时间。

问题

我需要比较 UTC 格式的当前时间,看看它是否在开始时间/结束时间范围之间。

代码

这是我现在获取当前日期/时间的代码:

        var currentUTC = ((new Date()).toUTCString()).split(" "); //returns an array like this: [ 'Thu,', '29', 'Sep', '2016', '15:52:32', 'GMT' ]
        currentUTC[0] =currentUTC[0].substring(0, currentUTC[0].length - 1); //strip off the traling "," in the day of week name.
        currentUTC[4] =currentUTC[4].substring(0, currentUTC[4].length - 3); //strip off the seconds portion of the time

将当前UTC 数组中的当前小时/分钟与数据库查询中的数据进行比较的最佳方法是什么? (让我们将该数组称为“规则”数组)。

我一直在阅读这篇文章Compare two dates with javascript

但这似乎是在比较完整的日期,而我只需要一个小时/分钟的比较。

【问题讨论】:

可以自己完成,但为什么不使用像 moment 这样的库来为您处理呢?你会有更少的不一致 看这个:***.com/questions/338463/… - 如果你不想编写自己的代码。 @Alex 酷。我从来不知道那件事。我看到它适用于节点......我会尝试一下 @Happydevdays 是的,您可以暂时包含 npm 包并开始使用 - 他们的文档很棒,我强烈推荐它! :) 你是说日期本身并不重要,只有小时和分钟?如果是这样,每次只需将小时乘以 60,加上分钟,然后比较总和。如果日期确实很重要,只需按照您链接到的重复问题中的建议为每个构建 Date 对象。 (Moment.js 是一个很好的库,但是对于像这个这样简单的问题,我认为它是矫枉过正的。) 【参考方案1】:

使用momentjs (http://momentjs.com/docs/) 可能是这样的:

var y = [ '9145001323', '08:00', '12:00' ]

var t1 = moment.utc(y[1], "HH:mm");
var t2 = moment.utc(y[2], "HH:mm");
var now = moment.utc();
if( now.isAfter(t1) && now.isBefore(t2) )
   console.log(" in range ");

【讨论】:

以上是关于如何在javascript中比较UTC时间的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JavaScript 中获取 UTC 时间戳?

已更新如何在 JavaScript 中获取 UTC 时间戳?

GMT 与 UTC 日期

带有 Javascript 的 ASP.NET Core DateTime Rest API 转换为 UTC 而不是 java

如何在 Python 中获取 UTC 时间?

如何将JavaScript日期转换为UTC?