Node.js 在不同于服务器时区(UTC)的时区(CST)内每午夜执行一次功能

Node.js 在不同于服务器时区(UTC)的时区(CST)内每午夜执行一次功能,node.js,momentjs,moment-timezone,Node.js,Momentjs,Moment Timezone,我有一个时区:例如“美国/芝加哥” 让timerTimeZone=“美国/芝加哥” 我们的服务器本地时间是UTC 我想在timerTimeZone变量中存储的时区中,每晚12:00执行一个函数 假设该程序在UTC下午6:00/CST下午1:00运行。因此,第一次执行应在11小时后(CST上午12:00)进行,接下来每24小时执行一次 我一直在尝试使用矩和矩时区,但找不到任何方法。我建议使用优秀的模块 这允许您根据cron表达式安排任务,还允许您指定要使用的IANA时区 我也在这里记录下一个作业将

我有一个时区:例如“美国/芝加哥”

让timerTimeZone=“美国/芝加哥”

我们的服务器本地时间是UTC

我想在timerTimeZone变量中存储的时区中,每晚12:00执行一个函数

假设该程序在UTC下午6:00/CST下午1:00运行。因此,第一次执行应在11小时后(CST上午12:00)进行,接下来每24小时执行一次


我一直在尝试使用矩和矩时区,但找不到任何方法。

我建议使用优秀的模块

这允许您根据cron表达式安排任务,还允许您指定要使用的IANA时区

我也在这里记录下一个作业将在指定时区和UTC中运行的5个日期

const CronJob = require("cron").CronJob;

// Run at midnight every night
const cronExpression = "00 00 * * *";

const timeZone = "America/Chicago";

const cronJob = new CronJob(
    cronExpression,
    cronFunction,
    null,
    true,
    timeZone
);

function cronFunction() {
    console.log("cronFunction: Running....");
    /* Do whatever you wish here... */
}

// Get the next N dates the job will fire on...
const nextDates = cronJob.nextDates(5);
console.log(`Next times (${timeZone}) the job will run on:`, nextDates.map(d => d.tz(timeZone).format("YYYY-MM-DD HH:mm")));
console.log("Next times (UTC) the job will run on:", nextDates.map(d => d.utc().format("YYYY-MM-DD HH:mm")));