Internationalization 如何计算一组用户的平均时区?

Internationalization 如何计算一组用户的平均时区?,internationalization,timezone,gmt,Internationalization,Timezone,Gmt,爱丽丝住在俄罗斯(格林尼治标准时间+7)。鲍勃住在阿拉斯加(格林尼治时间8点)。它们相对较近,相距不到200英里 Alice和Bob应该根据他们的平均时区在中午会面,这样双方都会尽可能少地感到不便。如果我们用GMT-8来平均GMT+7,我们得到的是GMT-0.5 这是行不通的,因为基于GMT-0.5计算正午对两者来说都更接近午夜,而不是正午,因为时区是线性计算的,而不是循环计算的 有谁知道一个图书馆可以解决Alice、Bob的问题,还可以让Charlie和Dave参加会议吗?你的GMT-0.5平

爱丽丝住在俄罗斯(格林尼治标准时间+7)。鲍勃住在阿拉斯加(格林尼治时间8点)。它们相对较近,相距不到200英里

Alice和Bob应该根据他们的平均时区在中午会面,这样双方都会尽可能少地感到不便。如果我们用GMT-8来平均GMT+7,我们得到的是GMT-0.5

这是行不通的,因为基于GMT-0.5计算正午对两者来说都更接近午夜,而不是正午,因为时区是线性计算的,而不是循环计算的


有谁知道一个图书馆可以解决Alice、Bob的问题,还可以让Charlie和Dave参加会议吗?

你的GMT-0.5平均值是错误的,因为要获得时差,我们必须考虑24小时周期和GMT在范围两端之间的一半这一事实

GMT+0700比GMT-0800早15小时,但由于15大于12(超过地球的一半),最短的时差实际上是9小时,但在不同的日子

那数学很容易。在伪代码中:

offset = abs( 7 - -8 )
if offset > 12 then offset = 24 - offset
给出偏移量==9

因此,双方离当地正午最近的时间是俄罗斯的爱丽丝中午前4.5小时(上午7:30)和阿拉斯加的鲍勃中午后4.5小时(下午16:30),但在前一天,因为俄罗斯在未来

这个中间点是一个我们可以称之为
GMT+1130
的假想时间偏移,因此Bob和Alice将安排在
00:30 GMT
会面


作为比较:timeanddate.com有一个会议计划器。它每小时循环一次,为克拉斯诺亚尔斯克和安克雷奇提供了上午8点/下午5点的最佳重叠时间



学术方面的观点:这两个时区之间的距离不仅仅是200英里。他们相距数千英里。俄罗斯的东点实际上比格林尼治标准时间早了12个小时。

在我看来,计算起来并不复杂。我同意如果有可靠的图书馆(我不知道),我更喜欢图书馆。你的搜索结果是什么?