我正在研究一项比赛功能,参赛者提供一个时区和一个他们喜欢玩的首选12小时窗口。假设时钟为0-24,则任何两个12小时的窗口至少将在末端接触。在给定范围和与这些范围相关的UTC偏移量的情况下,我坚持如何确定可行的时间。
示例:
如何从双方球员的角度找到比赛的最佳时间 ?在理想情况下,这应该在每个玩家范围的中间处于正方形,但是显然在大多数情况下这是无法实现的。
答案 0 :(得分:1)
最容易理解的方法是找出每个玩家的时间在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]
数组,分别位于各自的球员对象中。
我已经对您如何在此处存储时间数据做出了一些假设,但是您应该能够进行调整。
答案 1 :(得分:-4)
我认为您需要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());