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

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

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

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

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

我尝试在客户端时间传递自从Unix时代以来的毫秒数:

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

但似乎并没有解决。

你有没有检查出moment.js,它使dateparsing愚蠢容易,并有一个处理时区转换(但通常不需要)的伴侣库。 他们的文档中有一部分解释了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()) 

跟踪这个,你会得到你的答案:

 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>'); });