【发布时间】:2013-01-31 04:02:28
【问题描述】:
我刚刚遇到了今天发生的一个问题(由于 1 月 31 日在澳大利亚悉尼)。基本上,给定年份、日期、小时、分钟、秒。我想创建一个日期,就像我在时区(澳大利亚/悉尼)中一样,然后将其转换为 UTC(即获取毫秒)。
这是因为数据库(和服务器)在 UTC 中工作,因为客户端可以在任何给定的时区(当完成发布请求时,客户端同时提供时区和年份,月、日、时、分、秒值)
问题是,当我为今天创建一个日期时,它会将日期一直追溯到本月的 1 月 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); 输出的时间完全关闭。
注意:我使用的是time npm library。
【问题讨论】:
-
好的,所以它实际上似乎是一个错误 (github.com/TooTallNate/node-time/issues/28)。问题是我找不到建议的解决方案,因为我需要在澳大利亚/悉尼创建一个时间,然后将其转换为 UTC,反之亦然
-
浏览这篇文章的答案。它可能有助于如何将 GMT 转换为 UTC。stackoverflow.com/questions/14495019/…
标签: node.js time timezone offset