通过Node.js发布时区模块“时间”

我刚刚遇到了一个今天发生的问题(由于1月31日在澳大利亚悉尼)。 基本上,给一年,date,小时,分钟,秒。 我想创build一个date,就像我在一个时区(澳大利亚/悉尼),然后将其转换为UTC(即获得毫秒)。

这是由于数据库(和服务器)以UTC工作的事实,因为客户端可以在任何给定的时区(当发布请求完成时,客户端提供时区和年,月,日,小时,分钟,秒值)

问题是,当我为今天创build一个date时,它将把date一直拖到本月3日的一月份,这里是代码来说明问题

var scheduled, someTime, time, timeinfo, timezone; process.env.TZ = 'UTC'; time = require('time'); timeinfo = { hour: 14, minute: '47', year: 2013, month: 1, date: 31 }; timezone = 'Australia/Sydney'; someTime = new Date(timeinfo.year, timeinfo.month - 1, timeinfo.date, timeinfo.hour, timeinfo.minute, 1, 1); scheduled = time.Date(timeinfo.year, timeinfo.month - 1, timeinfo.date, timeinfo.hour, timeinfo.minute, 1, 1, timezone); console.log(someTime); console.log(scheduled); 

当你在Node.js中运行这个, console.log(scheduled);输出的时间console.log(scheduled); 是完全closures的。

注意:我正在使用npm库 。

似乎是节点时间如何计算时区的一个错误,与执行转换时的操作顺序有关。 截至目前,github.com上有一个公开的问题(#28) 。

我已经提交了一个拉请求 ,在同一时间尝试,看看它是否适用于您的特定情况。

请尝试下面的代码

1.格林尼治标准时间

 var GMTtimeObj = new Date(); 

2.对于UTC时间:

 var UTCtimeObj = +new Date(); 

让我知道它是否适合您的要求。

通过这个职位的答案 ,以及它可能会帮助你..

这是一个最近修复的bug,请看https://github.com/TooTallNate/node-time/pull/30

它的工作现在完美

Interesting Posts