带时区的 node-cron

Posted

技术标签:

【中文标题】带时区的 node-cron【英文标题】:node-cron with timezones 【发布时间】:2012-06-10 17:22:47 【问题描述】:

我有一个带有node-cron(0.3.2) 和node-time(0.8.2) 的node(v0.7.3-pre) 服务器:

var cronJob = require('cron').CronJob;
var cronJ = new cronJob(
 cronTime: "00 29 16 6 * *",
 onTick: function() 
  console.log("Tick");
 ,
 start:true,
 timeZone: "America/Los_Angeles"
);
console.log(cronJ);

它运行,但 Cron 始终使用服务器时间(UTC),返回的 cron 是:

 _callbacks: [ [Function] ],
  onComplete: undefined,
  cronTime:
    source: '00 29 16 6 * *',
     zone: undefined,
     second:  '0': true ,
     minute:  '29': true ,
     hour:  '16': true ,
     dayOfWeek:
...

zone 设置为undefined,我错过了什么吗?

【问题讨论】:

【参考方案1】:

因为 node-cron 模块中的错误。我已经发送了pull request 来修复它。您可以在此模块的本地副本中更改此行。

您也可以使用多个函数参数来初始化 cronJob 而不是一个对象:

var cronJob = require('cron').CronJob;
var cronJ = new cronJob("00 29 16 6 * *", function() 
        console.log("Tick");
, undefined, true, "America/Los_Angeles");

console.log(cronJ);

【讨论】:

以上是关于带时区的 node-cron的主要内容,如果未能解决你的问题,请参考以下文章

java时间转换,带时区的

带时区的Strptime

带 ActiveSupport 的默认时区(不带 Rails)

带rails 3的时区

如何将带时区的日期时间插入 SQLite?

JPQL 和带时区的时间戳