Javascript 如何通过节点调度模块在特定时区的任何时间调度作业

Javascript 如何通过节点调度模块在特定时区的任何时间调度作业,javascript,node.js,date,npm,timezone,Javascript,Node.js,Date,Npm,Timezone,我想在哥本哈根时间15:00安排一个作业,无论我的服务器在哪里运行。我正在使用“节点计划”npm模块。我为此问题做了很多工作,并找到了解决方案 哥本哈根/时区:中欧时区(UTC+01:00) CET(中欧时间)时区的UTC偏移量为+1:00 因此,要将哥本哈根时间转换为UTC时间,我们需要从哥本哈根时间减去一小时。 示例:哥本哈根15:00=UTC 14:00 如果我们希望将作业安排在15:00哥本哈根,并且服务器在任何地方运行,那么我们可以使用以下方法: var copenhagenHour

我想在哥本哈根时间15:00安排一个作业,无论我的服务器在哪里运行。我正在使用“节点计划”npm模块。

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

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

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

如果我们希望将作业安排在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打印

这对我有用


<>强>注:< /强>目前我没有考虑“夏令时”。

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

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

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

如果我们希望将作业安排在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打印

这对我有用


<强>注:目前我没有考虑“夏令时”。

你所做的是可以的,但是你应该把时间设置成一个LIB。p>


var a=moment.tz(“2013-11-18 11:55”,“美国/多伦多”)

您所做的是可以的,但是您应该使用类似的lib设置时间


var a=moment.tz(“2013-11-18 11:55”,“美国/多伦多”)

节点计划
具有可用于指定规则时区的<代码>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!');
});

此处列出的时区:

节点计划
具有
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!');
});

此处列出的时区:

如何解决我根据特定时区设置工作时间的目的?正如@RobG所说。将哥本哈根时间转换为UTC,然后安排工作。如何解决我根据特定时区设置工作时间的目的?正如@RobG所说。将哥本哈根时间转换为UTC,然后安排作业。将“哥本哈根时间”转换为UTC,然后使用
新日期(Date.UTC(…)
设置日期。您将如何处理夏令时?将“哥本哈根时间”转换为UTC,然后使用
新日期(Date.UTC(…)
设置日期。你将如何处理夏时制?你假设当地日期与哥本哈根日期相同。可能不是,因此您可能将时间设置在错误的日期。您还假设时区是1小时的偶数倍,有些时区有15分钟和30分钟的偏移量。您假设本地日期与哥本哈根日期相同。可能不是,因此您可能将时间设置在错误的日期。您还假设时区是1小时差的偶数倍,有些时区有15分钟和30分钟的偏移量。