我正在寻找一种获取时区列表的方法,其中当前时间是一个变量(它也必须与DST相关)。
例如,我需要将消息推送给当地时间为18:45的用户。我可以通过时区从我们的数据库中获取用户列表。因此,我计划每15分钟唤醒一次预定活动,它需要检查当前18:45的时区,以便能够找到合适的用户。
我们的环境是节点js。 我正在考虑的方式最好是一个Web服务或一些实用工具,包括来自iana timezones数据库的更新。但如果没有这样的替代方案,我可以处理不太方便的方法。
提前致谢。
答案 0 :(得分:1)
以下是使用moment-timezone
执行此操作的一种简单方法(我相信它可以处理夏令时等问题,而不是100%肯定 - 但肯定会比单独从头开始做得更好..看看他们的github回购问题 - 这是一个复杂的话题):
var moment = require('moment-timezone');
var tm = moment();
var toFind = tm.format('h:mm a');
var userZones = ['America/Los_Angeles', 'America/New_York'];
for (var i=0; i<userZones.length; i++) {
var fmt = tm.tz(userZones[i]).format('h:mm a');
if (fmt === toFind) console.log('matched zone: ' + userZones[i]);
}