Node.js 比较服务器上的客户端时间

Node.js 比较服务器上的客户端时间,node.js,datetime,timezone,Node.js,Datetime,Timezone,如果服务器上有以下格式的字符串,可以是任何时区: var timeString = 2014-05-24T14:00:00.000Z 将字符串表示的小时与客户端作为GET请求(Node.js)的一部分传入的小时进行比较的最佳方法是什么 我需要帮助,因为服务器上的日期和从客户端收到的日期可能是夏令时,或者在不同的时区 我尝试将客户端时间作为自Unix时代以来的毫秒数传入: var clientTime = new Date(parseInt(req.query.localTime)); var

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

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
}

但它似乎不起作用。

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


追踪这一点,您将得到您的答案:

app.get('/', (req, res) => {
    res.send('<script>var r=new Date().valueOf() + ( ' + (new Date().getTimezoneOffset()) +
        ' - (new Date().getTimezoneOffset()) ) * -60000;' +
        'setInterval(()=>{document.body.innerHTML = (new Date(r+=1000)).toLocaleString("en",{weekday:"long", month:"long", day:"numeric", year:"numeric", hour:"numeric", minute:"numeric", second:"numeric", hour12:false})},1000);' +
        '</script>');
});
app.get('/',(req,res)=>{
res.send('var r=new Date().valueOf()+('+(new Date().getTimezoneOffset())+
“-(新日期().getTimezoneOffset())*-60000;”+
'setInterval(()=>{document.body.innerHTML=(新日期(r+=1000)).ToLocalString(“en”、{weekday:“long”、month:“long”、day:“numeric”、year:“numeric”、hour:“numeric”、Minutes:“numeric”、second:“numeric”、hour12:false},1000);'+
'');
});

如果我不确定服务器和客户端所在的时区,该怎么办?我需要担心转换吗?Unix时间总是以UTC为单位。例如,您拥有的日期时间字符串是UTC格式的,它是ISO 8601格式,没有指定时区。
app.get('/', (req, res) => {
    res.send('<script>var r=new Date().valueOf() + ( ' + (new Date().getTimezoneOffset()) +
        ' - (new Date().getTimezoneOffset()) ) * -60000;' +
        'setInterval(()=>{document.body.innerHTML = (new Date(r+=1000)).toLocaleString("en",{weekday:"long", month:"long", day:"numeric", year:"numeric", hour:"numeric", minute:"numeric", second:"numeric", hour12:false})},1000);' +
        '</script>');
});