每天在特定时间运行节点任务/功能,同时考虑夏令时

时间:2018-03-20 12:58:39

标签: node.js cron scheduling

我正在尝试在每天的特定时间(东部时间早上7点)运行节点任务/功能,而不考虑夏令时。我已经尝试过基于cron的软件包,但是cron似乎没有考虑到它。运行应用程序的服务器是GMT / UTC,因此也需要考虑这一点。这是我目前的代码:

const schedule = require('node-schedule');
...
const j = schedule.scheduleJob('0 12 * * *', function(){
  bot.channels.get(getDefaultChannel().id).send("Hello!  Your daily fact for today is", { embed: generateEmbed(getRandomFact()) });
});

这很好用,但由于我们只是提前一小时,所以消息显示在早上8点而不是早上7点。

1 个答案:

答案 0 :(得分:1)

这是一个棘手的问题,我已经通过几种方式来实现这一点,我认为Cron库工作得最好(https://www.npmjs.com/package/cron)。您可以安排在美国/东部时区早上7点开始工作。

"use strict";
var cron = require('cron');

var job1 = new cron.CronJob({
  cronTime: '0 7 * * *',
  onTick: function() {
    bot.channels.get(getDefaultChannel().id).send("Hello!  Your daily fact for today is", { embed: generateEmbed(getRandomFact()) });
  },
  start: true,
  timeZone: 'US/Eastern'
});
相关问题