【问题标题】:Comparing client time on the server比较服务器上的客户端时间
【发布时间】:2014-11-13 22:29:12
【问题描述】:

如果我在服务器上有以下格式的字符串,可以在任何时区:

var timeString = 2014-05-24T14:00:00.000Z

将字符串表示的小时与客户端作为 GET 请求 (Node.js) 的一部分传入的小时进行比较的最佳方法是什么?

我需要帮助,因为服务器上的日期和从客户端收到的日期可能是夏令时或不同的时区。

我尝试将客户端时间作为自 Unix 纪元以来的毫秒数传递:

var clientTime = new Date(parseInt(req.query.localTime));
var serverTime = new Date(timeString);
if (serverTime.getUTCHours() == clientTime.getUTCHours()) {
    // the hours match
}

但似乎没有成功。

【问题讨论】:

    标签: node.js datetime timezone


    【解决方案1】:

    您是否查看了 moment.js,它使日期解析变得很容易,并且有一个用于处理时区转换的配套库(但通常不需要)。他们的文档中有一节解释了处理 UTC 与本地以及如何来回转换。

    http://momentjs.com/docs/#/parsing/utc/

    var moment = require('moment')
    var timeString = '2014-11-14T00:06:34.000Z'
    var epochTime = 1415923594000
    
    var serverTime = moment(timeString).utc()
    var clientTime = moment(epochTime).utc()
    
    
    console.log(serverTime.hour());
    console.log(clientTime.hour())
    

    【讨论】:

    • 如果我不确定服务器和客户端在哪个时区怎么办?我需要担心转换吗?
    • Unix 时间始终采用 UTC。您作为示例的日期时间字符串是 UTC,它是 ISO 8601 格式,没有指定时区。 en.wikipedia.org/wiki/ISO_8601#Time_zone_designators
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-14
    • 2020-07-09
    • 1970-01-01
    • 2013-11-16
    • 1970-01-01
    • 2012-12-22
    相关资源
    最近更新 更多