鉴于当前的UTC时间和当天的特定小时,我想找到以分钟为单位的时区偏移量。当小时为午夜时,下面的函数(我认为)适用于所有时区(不包括从30分钟和45分钟开始的几个时区,但如果每小时运行一次,那么时区范围仍然会覆盖这些时区)。
function getCurrentGlobalTimeOffset(currentGlobalTime) {
var currentGlobalHour = dateFormat(currentGlobalTime, 'H');
if (currentGlobalHour <= 11) {
var currentGlobalOffsetStart = currentGlobalHour * 60;
var currentGlobalOffsetEnd = (currentGlobalHour * 60) + 60;
} else {
var currentGlobalOffsetStart = (24 - currentGlobalHour) * -60;
var currentGlobalOffsetEnd = ((24 - currentGlobalHour) * -60) + 60;
}
return {
start: currentGlobalOffsetStart,
end: currentGlobalOffsetEnd
}
}
我正在努力弄清楚如何整合特定时间。例如,如果我想在太平洋时间上午9:00获得时区偏移量,那么2019-02-23T17:00:00.000Z
UTC时间的预期结果将是:
{
start: 480,
end: 540
}
我也试过找一个这样做的图书馆,但我没有运气。据我所知,moment.js
不提供此功能。
实现这一目标的最佳方法是什么?
不可能以100%的置信度完成你所要求的结果,这就是为什么你在Moment.js或其他库中找不到这个功能的原因。原因是世界的时区偏移目前在UTC-12到UTC + 14的范围内,因此存在重叠,其中这样的函数将具有模糊结果。
以2019-02-23T20:00:00Z
(UTC)为例。这是2019-02-23T09:00:00-11:00
(在美属萨摩亚)和2019-02-24T09:00:00+13:00
(在新西兰)(reference here)。因此,如果当前的UTC小时是20
并且给定的当地小时是9
,那么此函数是否应该返回-11
或+13
?
最好的方法是计算两个潜在的偏移,然后看看其中一个是否超出范围以排除它。或者,如果一个人不关心处理整个世界的数据,那么可以缩小范围以使其不重叠。