我想在哥本哈根时间 15:00 安排作业,无论我的服务器在哪里运行。我正在使用"节点计划"npm 模块。
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
你做的没问题,但你应该用像 http://momentjs.com/timezone/docs/这样的库来设置时间。
var a = moment.tz("2013-11-18 11:55", "America/Toronto");
我为这个问题做了很多工作并找到了解决方案。
哥本哈根/时区: 中欧时区(UTC+01:00)CET(中欧时间)时区的 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 打印。
它对我有用。
注意:目前我没有考虑"夏令时"。