【问题标题】:Run Node task/function at specific time daily while accounting for Daylight Savings每天在特定时间运行节点任务/功能,同时考虑夏令时
【发布时间】:2018-03-20 12:58:39
【问题描述】:

我正在尝试在每天的特定时间(东部时间早上 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 点出现。

【问题讨论】:

    标签: node.js cron scheduling


    【解决方案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'
    });
    

    【讨论】:

    • 嘿@TheIcemanCometh,我在这里用更简洁的代码更新了答案!
    • 我今天终于有机会看看这个,看起来它会很好用。谢谢!
    • 不错,Cron作业包非常好用!
    猜你喜欢
    • 2019-09-11
    • 2016-08-01
    • 2020-12-16
    • 1970-01-01
    • 2011-08-14
    • 2019-05-26
    • 2013-01-15
    • 2015-05-09
    • 2013-09-22
    相关资源
    最近更新 更多