使用 npm time 包是否可以测试时区的有效性

Using npm time package is it possible to test validity of timezone

我正在使用带有 cron 的 npm 时间模块来创建与时区正确的事件。用户输入他们的时区,我希望能够在将其传递给 cron 对象之前检查他们输入的时区是否有效。

我正在使用 coffeescript,所以不确定如何在 javascript 中编写它。但我想要如下内容:

var time = require('time');
var zone = "Europe/Lndn"; 
var x = time.checkIfValid(zone); #user misspelled London so returns false
if(x === false)
  #do something

这是包的 link 没有说明有效性检查 https://www.npmjs.com/package/time

对此有任何想法或解决方法都很好

查看源代码 setTimezone 调用 tzset 如果给出的时区无效,它将引发错误。下面是相关代码:

if (!rtn.tzname[1] && rtn.timezone === 0) {
    debug('got bad zoneinfo object:', rtn);
    var err = new Error("Unknown Timezone: '" + usedTz + "'");
    for (var i in rtn) {
        err[i] = rtn[i];
    }
    throw err;
}

您可以在调用 setTimezonetzset 时使用 try catch statement 来处理无效时区。

因此,查看作为 cron 依赖项的 moment-timezone 包,有一个方法 tz.zone() 如果时区无效则 returns 为空,如果有效则为数组。

var moment = require("moment-timezone");
var x = moment.tz.zone("Europe/Berlin");
if(x === null)
  #invalid timezone