如何在nodejs中确定两个日期是当地时间的同一天?
How to determine two date is same day at local time in nodejs?
这里有两个日期,2015-11-10 09:00:00+08:00
和2015-11-10 01:00:00+08:00
在中国是同一天。但它们在 UTC 中是不同的一天。
所以...如何确定 node.js 中不同时区的两个 UTC 日期是同一天?
对不起,我的描述含糊不清,英语不好。
我有两个字符串:start_time 和 end_time。克林特上传了另外两个字符串:timezone_str、utc_time_str.
我想确定客户端时间在开始和结束时间之间。
例如
- start_time:
2015-11-10 00:00:00
- end_time:
2015-11-11 00:00:00
- utc_time_str:
2015-11-10 02:00:00Z
- timezone_str:
America/New_York
除了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
像这样计算局部"hours"
var d1 = new Date('2015-11-10 09:00:00+08:00')
var d2 = new Date('2015-11-10 01:00:00+08:00')
var h1 = d1.getHours() - d1.getTimezoneOffset() / 60
var h2 = d2.getHours() - d2.getTimezoneOffset() / 60
var date1 = d1.getDate() + (h1 >= 24? 1: 0)
var date2 = d2.getDate() + (h2 >= 24? 1: 0)
只比较日期 1 和日期 2
最可靠的方法是使用带有 'day'
参数的 parseZone
function in moment.js to retain the provided offset. Then use the isSame
函数,它测试相同的年月日。
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')) {
// ...
}
使用这种方法,给出的偏移量无关紧要,代码为 运行 的计算机上的时区也无关紧要。它只是比较提供的两个日期。
这里有两个日期,2015-11-10 09:00:00+08:00
和2015-11-10 01:00:00+08:00
在中国是同一天。但它们在 UTC 中是不同的一天。
所以...如何确定 node.js 中不同时区的两个 UTC 日期是同一天?
对不起,我的描述含糊不清,英语不好。
我有两个字符串:start_time 和 end_time。克林特上传了另外两个字符串:timezone_str、utc_time_str.
我想确定客户端时间在开始和结束时间之间。
例如
- start_time:
2015-11-10 00:00:00
- end_time:
2015-11-11 00:00:00
- utc_time_str:
2015-11-10 02:00:00Z
- timezone_str:
America/New_York
除了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
像这样计算局部"hours"
var d1 = new Date('2015-11-10 09:00:00+08:00')
var d2 = new Date('2015-11-10 01:00:00+08:00')
var h1 = d1.getHours() - d1.getTimezoneOffset() / 60
var h2 = d2.getHours() - d2.getTimezoneOffset() / 60
var date1 = d1.getDate() + (h1 >= 24? 1: 0)
var date2 = d2.getDate() + (h2 >= 24? 1: 0)
只比较日期 1 和日期 2
最可靠的方法是使用带有 'day'
参数的 parseZone
function in moment.js to retain the provided offset. Then use the isSame
函数,它测试相同的年月日。
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')) {
// ...
}
使用这种方法,给出的偏移量无关紧要,代码为 运行 的计算机上的时区也无关紧要。它只是比较提供的两个日期。