这里有两个日期,2015-11-10 09:00:00+08:00
和 2015-11-10 01:00:00+08:00
在中国是同一天。但它们在 UTC 中是不同的一天。
那么...我如何确定两个 UTC 日期在 node.js 中的不同时区是同一天?
对不起,我的描述含糊不清,英语不好。
我有两个字符串:start_time 和 end_time。 clint 上传另外两个字符串:timezone_str、utc_time_str。
我想确定客户端时间是在开始时间和结束时间之间。
例如
- 开始时间:
2015-11-10 00:00:00
- 结束时间:
2015-11-11 00:00:00
- utc_time_str:
2015-11-10 02:00:00Z
- timezone_str:
美国/纽约
除了client_time.isBetween(start_time, end_time) == false
。
感谢@Matt Johnson 的回答,moment-timezone可以解决我的问题。
client_time = moment(utc_time_str).tz(timezone_str);
start = moment.tz(start_time, timezone_str);
end = moment.tz(end, timezone_str);
client_time.isBetween(start, end) === false
最佳答案
最可靠的方法是使用 parseZone
在 moment.js 中发挥作用保留提供的偏移量。然后使用 isSame
带有 'day'
参数的函数,该参数测试同一年、月和日。
var m1 = moment.parseZone("2015-11-10 09:00:00+08:00");
var m2 = moment.parseZone("2015-11-10 01:00:00+08:00");
if (m1.isSame(m2, 'day')) {
// ...
}
使用这种方法,给出的偏移量无关紧要,运行代码的计算机上的时区也无关紧要。它只是比较所提供的两个日期。
关于node.js - 如何在nodejs中确定两个日期是本地时间的同一天?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33775607/