对于给定的小时,如何获得该小时所在的时区
For a given hour, how to get the timezone where the hour is
所以我要澄清为什么我要这样做:我需要在用户所在时区的晚上7点时向用户发送推送通知。
对于每个已注册的设备,我都有一个时区字符串,如"Europe/Paris"。
我正在创建一个每小时运行一次的后台作业。它应该获取晚上7点的用户列表,并向他们发送通知。
所以我想回答的问题是:
"现在到底是晚上7点在哪"
编辑重要的是要获得时区,即使它的格式不像"Europe/Paris",我可以用数组手动进行转换。
Javascript中没有内置支持将"标准"时区名称(例如Europe/London
)转换为时区偏移量。
你提到推送通知,所以这表明你不是在浏览器中运行。如果你正在使用Node.js,有一个很好的库,我用过叫做timezone
,它使用一组本地时区规范文件来处理时区之间的转换。
请注意,时区规格确实有时会发生变化,例如,当一个国家政府在几乎没有通知的情况下决定他们今年不使用夏令时。因此,保持本地映射的最新状态是至关重要的。
可能有一种更简单的方法来做到这一点,但是要有一个具有时区的用户数据库。然后在通知服务器和该时区之间设置一个小时的时差。因此,您的服务器是太平洋时间,而时区是东部,它将有3的差异。
使用您想要的时间与服务器上的时间之差来确定时区。你想要16:xx,它是13:xx,你得到+3小时的差异,使用它来查找时区,然后推送到与该时区相关的所有用户。
可能有一个更简单的方法,但这种方法是真正的简单的解决方案,需要一个数据库和一点sql知识。
编辑:如果你不介意使用web api的时间延迟,你应该看看这个:https://developers.google.com/maps/documentation/timezone/
哎呀,数字与时区不一致,谢谢Trent
- 内部分区字体大小获胜'调整浏览器窗口大小时不会随媒体查询而更改
- 调整窗口大小时,可拖动的对象会出现在容器外部
- toLocaleDateString和toLocaleString方法不尊重机器时区
- 用每小时的差值填充数组/列表-从下拉列表中给定两个时间值
- 如何在iOS应用程序中从Firebase中删除超过6小时的数据
- 高库存时期时间与时区不匹配
- 仅在IE中,javascript中的时区名称不正确
- 带时区的Javascript Datestring转换器
- IE在将字符串转换为日期时从日期中删除4小时
- 调整屏幕大小时更改属性值
- 获取用户选择的不带时区的日期
- 将直流图表库中的折线图缩放限制为小时
- Rails:如何获取当前用户'使用Heroku时的时区
- 为什么要做新的.Date()与new相差1小时.日期().到ISOString()
- 让谷歌数据图表有一个24小时x轴
- 当非整小时偏移时,带有 Moment 的时区显示不正确.js
- 获取时区时差(以小时为单位)
- 对于给定的小时,如何获得该小时所在的时区
- 将时区偏移小时数转换为时区偏移(军事?)小时
- Date.toString()在Firefox中不能将小时转换为正确的时区