我无法找到允许我在任何时间点查询任何时区的时区信息的程序包。或者至少在接下来的10年左右。在我的用例中,历史值并不重要。
理想情况下,我希望有一个像:
这样的APIvar tzInfo = require(tz-info);
var utcOffset = tzInfo.getOffset('Europe/Stockholm', new Date()); //query the current offset from UTC
var allTimezones = tzInfo.getAllTimezoneNames();
我已经搜索过但是很短暂。像时刻这样的大多数图书馆似乎非常注重在不同时区表达一次。这与我的用例不同。
在linux中你可以这样做:
#get all timezone names
cd /usr/share/zoneinfo ; find
#get all offset changes
zdump -v <timezone>
我想这是一个选项并解析zdump的输出来构建我自己的数据库。但我宁愿不。平台独立性非常好。但不是交易破坏者。
答案 0 :(得分:2)
Moment-timezone绝对符合这一要求。
var moment = require('moment-timezone');
// query the current offset from UTC
var utcOffset = moment.tz('Europe/Stockholm').utcOffset();
// query the offset from UTC for a specific point in time
// (input can be string, date, moment, timestamp, etc. see the docs)
var utcOffset = moment.tz(input, 'Europe/Stockholm').utcOffset();
这是有效的,因为moment-timezone是一个扩展名到moment.js。所有的moment.js函数都可用,包括utcOffset
函数。
是的,您还可以获取时区的名称:
var allTimezones = moment.tz.names();
然而,我会突出一个缺陷:
......或者至少在接下来的10年左右......
地球上没有任何系统可以准确地为您预测未来10年的时区。政府不断改变主意,系统必须相应更新。你应该为此做好计划。
TZDB中的信息(由Linux,时区和其他许多人使用)仅与世界各国政府提供的当前信息一样准确。未来10年的预测肯定需要多次重新评估。
答案 1 :(得分:0)