【问题标题】:Find the difference between 2 dates and check if smaller than a given value查找 2 个日期之间的差异并检查是否小于给定值
【发布时间】:2020-03-06 01:59:32
【问题描述】:

我的问题是,我希望能够获得两个时间戳,并比较第二个(后来拍摄的)是否距离第一个不到 59 分钟。 关注这个话题Compare two dates with JavaScript

日期对象可以完成这项工作。

但我不满意的第一件事是它占用了我的系统时间。 是否可以从某些公共服务器或其他东西上获取时间? 因为系统时钟总是有可能在时间戳内被操纵,所以这太不可靠了。 一些外部资源会很棒。

然后我不太确定如何获得 2 次之间的差异(使用 2 个日期对象)。 许多可能会弹出的问题: 时间是 3:59 和 6:12 所以只是比较分钟会给出错误的想法。 所以我们也考虑小时数。 但是有模24的问题。 第 3 天 23:59 和第 4 天 0:33 也不会被正确观看。

所以也包括天数。 然后是模 30 的东西,即使它在上面每个月都在变化。 所以月份和年份也要包括在内。

所以我们需要整个日期,从当年到第二个(因为第二个也很好,为了精确) 并且比较它们需要大量的年、月等 if 子句。

日期对象是否有一些预先确定的日期比较功能,实际上记住了所有这些事情(我还没有提到闰年,是吗)?

时间非常重要,因为正好在 59 分钟标记处(+-max 5 秒无关紧要,但禁止接近 60 秒) 必须使用某个功能,以确保关闭网站。 脚本在 0 分钟时打开网站,冲洗并重复样式,并在 59 分钟时关闭页面。

每隔几秒检查一次时间会很聪明。

有什么好的想法可以实现这样的时间比较,它不需要太多的计算机能力,但在新的一个月开始时效率很高,而且事情不会搞砸?

【问题讨论】:

    标签: time timestamp comparison difference


    【解决方案1】:

    您可以比较两个日期时间,但是在创建日期时间时有一个参数DateTime(value) 可以使用。

    您可以使用this API 来获取当前的 UTC 时间,它会返回一个示例 JSON 数组,如下所示:

    { 
       "$id":"1",
       "currentDateTime":"2019-11-09T21:12Z",
       "utcOffset":"00:00:00",
       "isDayLightSavingsTime":false,
       "dayOfTheWeek":"Saturday",
       "timeZoneName":"UTC",
       "currentFileTime":132178075626292927,
       "ordinalDate":"2019-313",
       "serviceResponse":null
    }
    

    因此,您可以使用从该 API 返回的 currentFileTimecurrentDateTime 来构造您的日期对象。

    例子:

    const date1 = new Date('2019-11-09T21:12Z') // time when I started writing this answer
    const date2 = new Date('2019-11-09T21:16Z') // time when I finished writing this answer
    
    const diff = new Date(date2-date1)
    console.log(diff.toTimeString()) // time it took me to write this
    

    请记住,由于网络速度的原因,时间 API 会稍微位偏离(几毫秒)

    【讨论】:

    • 当前文件时间是否类似于自某个固定时间点以来经过的秒数?就像自 2000 年 1 月 1 日 0:00 以来经过的秒数?这将是迄今为止我可以用来计算时差的最简单的方法! :o
    猜你喜欢
    • 2011-07-29
    • 2016-03-20
    • 1970-01-01
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多