我刚刚遇到了今天发生的一个问题(由于 1 月 31 日在澳大利亚悉尼)。基本上,给定年份、日期、小时、分钟、秒。我想创建一个日期,就像我在时区(澳大利亚/悉尼)中一样,然后将其转换为 UTC(即获取毫秒)。
这样做是因为数据库(和服务器)在 UTC 中工作,因为客户端可以在任何给定的时区(完成发布请求时,客户端同时提供时区和年、月、日,小时,分钟,秒值)
问题是,当我为今天创建日期时,它会将日期一直追溯到本月 3 日的 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。