繁体   English   中英

如何在特定时区的任何时间通过节点计划模块计划作业

[英]How to schedule a job by node-schedule module at any time of specific timezone

我想在哥本哈根时间15:00安排作业,而不管服务器在哪里运行。 我正在使用'node-schedule'npm模块。

没关系,但是您应该使用类似http://momentjs.com/timezone/docs/的lib来设置时间。

var a = moment.tz("2013-11-18 11:55", "America/Toronto");

我为解决这个问题做了很多工作,并找到了解决方案。

哥本哈根/时区:中欧时区(UTC + 01:00)的 UTC偏移为+1:00。

因此,要将哥本哈根时间转换为UTC时间,我们需要从哥本哈根时间中减去一小时。 例如:哥本哈根15:00 = 14:00 UTC

如果我们想在哥本哈根的15:00安排工作,并且服务器在任何地方运行,则可以使用以下方法:

var copenhagenHour = 15;//You can set any hour at which you want to schedule a job
var copenHagenMinutes = 0;//You can set any minute
var date = new Date();
date.setUTCHours(copenhagenHour - 1);//-1 defines the UTC time offset for a particular timezone
date.setUTCMinutes(copenHagenMinutes);

var scheduledRoutes = schedule.scheduleJob({hour: date.getHours(), minute: date.getMinutes()}, function(){
console.log('call scheduled job');
});

以上控制台“呼叫计划作业”将在哥本哈根的15:00和印度的19:30打印。

它为我工作。

注意:目前我没有考虑“夏令时”。

node-schedule具有RecurrenceRule() ,可用于为规则指定时区。

let schedule = require('node-schedule');
let rule = new schedule.RecurrenceRule();

// your timezone
rule.tz = 'Europe/Copenhagen';

// runs at 15:00:00
rule.second = 0;
rule.minute = 0;
rule.hour = 15;

// schedule
schedule.scheduleJob(rule, function () {
  console.log('Hello World!');
});

此处列出的时区: https : //en.wikipedia.org/wiki/List_of_tz_database_time_zones

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM