为了澄清我为什么要这样做:我需要在用户时区晚上7点向用户发送推送通知。
对于每个注册的设备,我都有一个时区字符串,例如"欧洲/巴黎"。
我正在创建一个每小时运行一次的后台作业。它应该获取其下午7点的用户列表,并向他们发送通知。
所以我想回答的问题是:
"世界上哪个地方现在是晚上7点"
编辑重要的是获取时区,即使它没有格式化为"欧洲/巴黎",我可以使用数组手动进行转换
答案 0 :(得分:0)
可能有一种更简单的方法可以做到这一点,但拥有一个拥有时区的用户数据库。然后在通知服务器和该时区之间有一个小时的差异。因此,您的服务器处于太平洋时间,而时区是东部,它将有3的差异。
使用您想要的时间差异以及服务器上的内容来确定时区。你想要16:xx它是13:xx你得到+3小时差异,用它来查找时区,然后推送给与该时区相关联的所有用户。
可能有一种更简单的方法,但这种方式是带有db和一点sql知识的真正简单的解决方案。
编辑:如果您不介意使用网络API的时间延迟,您应该检查一下:https://developers.google.com/maps/documentation/timezone/
关于时区的哎呀数字已经关闭,谢谢特伦特
答案 1 :(得分:0)
Javascript中没有用于转换"标准"的内置支持。时区名称(例如Europe/London
)到时区偏移量。
您提及推送通知,以表明您未在浏览器中运行。如果您正在使用Node.js,那么我使用了一个名为timezone
的好库,它使用一组本地时区规范文件来处理时区之间的转换。
请注意,时区规格做有时会发生变化,例如当一个国家政府在没有注意到他们今年没有进行夏令时的情况下做出决定时。确保您的本地映射保持最新状态至关重要。