gpt4 book ai didi

node.js - node-cron timezone 仅在时区与机器时区相同时工作

转载 作者:行者123 更新时间:2023-12-04 02:31:52 29 4
gpt4 key购买 nike

编辑:- 这已在“node-cron”版本>“3.0”中得到解决

我有以下代码。 “node-cron”:“^2.0.3”

cron.schedule('46 00 * * *',() => {
//code to be executed
console.log("Tik")
},{
scheduled: true,
timezone: "America/New_York"
});

根据我的理解,无论我的机器时区如何,这都应该在美国/纽约时间上午 12:46 触发。但是直到我将时区与主机时间相匹配时它才起作用,例如,如果我的机器时区是欧洲/伦敦并且我使用 timezone: "Europe/London" cron 将在准确的时间工作.

我想为特定时区安排 cron。由于我处理的时区很少,所以每半小时运行一次 cron 并检查 dosent 看起来很有效。

最佳答案

好吧,我对这个错误背后的原因感到有些震惊。 node-cron 使用 tz-offset计算时区偏移量......但是这个模块不考虑夏令时!所以我认为这个库存在根本性的缺陷,因为 很多 时区使用 DST(当然包括 America/New_York。为此提出了问题:https://github.com/node-cron/tz-offset/issues/8

这意味着您的 cron 作业将在 01:46 或刚好晚一小时运行。现在它会在正确的时间运行大约半年,这几乎使这个问题变得更糟。

我建议尝试使用 cron模块,代码将非常相似,但会正确处理时区,因为它使用 luxon计算 UTC 偏移量。

const CronJob = require('cron').CronJob;
const job = new CronJob('46 00 * * *', () => {
console.log('Tik');
}, null, true, 'America/New_York');
job.start();

更新:看起来它现在已在 node-cron 中修复。

关于node.js - node-cron timezone 仅在时区与机器时区相同时工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63771373/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com