今日発生した問題に遭遇しました (ここオーストラリア シドニーでは 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を使用しています。