寻找跨时区的兼容时间
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了寻找跨时区的兼容时间相关的知识,希望对你有一定的参考价值。
我正在制作锦标赛功能,参赛者可以提供时区和12小时优先选择的窗口。鉴于时钟为0-24,任何两个12小时的窗口至少会触及两端。考虑到这些范围相关的范围和UTC偏移,我坚持如何确定可行时间。
例:
- 玩家A - 偏移:UTC + 2 - 范围:0:00-12:00
- 玩家B - 偏移:UTC-3 - 范围:9:00-21:00
如何从双方球员的角度找到最佳的比赛时间?在一个完美的场景中,这将是每个球员范围中间的正方形,但显然在大多数情况下这是不可能实现的。
答案
最容易理解的方法是弄清楚每个玩家的范围在UTC的时间,找到重叠,然后将其转换回玩家的时区。
const players = [
{
offset: 2,
start: 0,
end: 12
},
{
offset: -3
start: 9,
end: 21
}
];
players.forEach(p => {
p.rangeUtc = [p.start + p.offset, p.end + p.offset];
});
const overlapUtc = [Math.max(...players.map(p => p.rangeUtc[0])),
Math.min(...players.map(p => p.rangeUtc[1]))];
players.forEach(p => {
p.overlapLocal = [overlapUtc[0] - p.offset, overlapUtc[1] - p.offset];
});
现在你将玩家的重叠时间存储在他们当地的时区中,作为各自玩家对象中的[startHour, endHour]
数组。
我已经对你如何在这里存储时间数据做了一些假设,但你应该能够适应它。
另一答案
我想你需要Date()
命令:
var date = new Date();
console.log("the date is: " + date.now.getDate());
console.log("the year is: " + date.now.getYear());
console.log("the time is: " + date.now.getTime());
console.log("the utc date is: " + date.now.getUTCDate());
以上是关于寻找跨时区的兼容时间的主要内容,如果未能解决你的问题,请参考以下文章