【问题标题】:How can you subtract dates with different time formats in JavaScript?如何在 JavaScript 中减去具有不同时间格式的日期?
【发布时间】:2020-09-28 02:44:28
【问题描述】:

我正在使用一个 API,它以以下格式返回日期:

2020-06-08 22:51:11 -0300

我需要计算在某些事件发生之前已经过去了多少时间,我使用 Date.now() 输出自 1970 年以来的毫秒数。

1591667758424

所以我得到了两种我无法减去的时间格式。同时使用两者的最佳解决方案是什么?

【问题讨论】:

    标签: javascript time format


    【解决方案1】:

    您可以使用getTime 将字符串日期转换为相同的格式,如下所示:

    const date = new Date('2020-06-08 22:51:11 -0300').getTime()
    console.log(date - 1591667758424 )
    

    【讨论】:

    • 我认为这会给你它没有考虑到的时区差异
    • 观察,如果返回 const date = new Date('2020-06-08 22:51:11 -0300').getTime() 的时间戳您将其转换回日期,它给出的日期与原始日期不同 new Date(timestamp) 我认为计算不正确
    • 确实如此。就我而言,我与示例中的日期处于同一时区,所以我没有问题。根据情况,他只是从字符串中删除 tz 信息。所以这两个日期都将在操作系统的 tz 处。
    • @Mario 你介意看看我下面的代码,告诉我你的想法吗,谢谢
    【解决方案2】:

    我认为计算应该这样进行

    srvtmili= new Date('2020-06-08 22:51:11').getTime()
    h=60*60*1000
    timedifference=4*h //3 hours from UTC and 1 hour (dls) from GMT 
    srvrtimeconvtolocal=timedifference+srvtmili //convert to local GMT in this case
    localtimeinmil=1591667758424
    timedifference=1591667758424-srvrtimeconvtolocal
    console.log('difference is',timedifference/(1000),'in seconds')
    

    【讨论】:

    • 感谢您征求我的意见,但我无权正确解释您的解决方案,处理不同时区的日期对我来说是一项悬而未决的任务。
    猜你喜欢
    • 1970-01-01
    • 2011-11-17
    • 2023-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多