node-schedule-tz:时区问题

时间:2018-06-06 08:18:47

标签: javascript node.js scheduled-tasks

为什么这不起作用?

var tournRule = new schedule.RecurrenceRule();
tournRule.dayOfWeek = 3;
tournRule.hour = 03;
tournRule.minute = 08;
tournRule.tz = 'Central Time';

我尝试在**中输入这么多不同的东西.tz =' CDT'部分但无论如何,它都不会触发。我从中得不到任何错误。

蒂亚!

修改

我想我也应该加上这个:

var tr = schedule.scheduleJob(tournRule, function() {
console.log("Im online. Im online");
})

编辑2

我想将时区指定为我正在开发机器人的ESL团队,以便为美国中部玩家和英国玩家制定不同的时间表。

3 个答案:

答案 0 :(得分:1)

我建议尝试使用cron包:https://www.npmjs.com/package/cron

我发现这与时区很好地配合,例如:

const CronJob = require('cron').CronJob;
const job = new CronJob({
  // Run at 05:00 Central time, only on weekdays
  cronTime: '00 00 05 * * 1-5',
  onTick: function() {
      // Run whatever you like here..
      console.log('CronJob ran!!');
  },
  start: true,
  timeZone: 'US/Central'
});

请点击此处查看时区列表: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

答案 1 :(得分:0)

来自project's readme on GitHub

如果指定了时区,则必须指定职位名称以及第一个参数。

要触发事件,您必须指定一个作业名称作为第一个参数:

schedule.scheduleJob('job name', '0 14 * * *', 'Asia/Shanghai', () => {
    console.log('Will execute on 14:00:00 GMT+8:00 (CST) everyday');
});

*到目前为止,该项目的npm页面对job name要求一无所知。它仅记录在GitHub readme file上。

答案 2 :(得分:-1)

根据https://www.npmjs.com/package/node-schedule-tz您不必指定时区,这是他们网站上的工作示例:

var rule = new schedule.RecurrenceRule();
rule.minute = 42;

var j = schedule.scheduleJob(rule, function(){
    console.log('The answer to life, the universe, and everything!');
});

以上示例将在每小时触发,结束于:42,如7:42,8:42,9:42等,确保您了解类似cron的事情是如何工作的