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

时间:2016-03-30 14:26:38

标签: javascript node.js time cron time.h

我使用带有cron的npm time模块来创建对时区正确的事件。用户输入他们的时区,我希望能够在将时区传递给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

这是该软件包的链接,没有说明有效性检查https://www.npmjs.com/package/time

任何想法或解决方法都很棒

2 个答案:

答案 0 :(得分:0)

查看源代码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

答案 1 :(得分:0)

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

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