セントラルタイムに格納されている日付があります。次の書式で表されます。2017-11-19T23:39:35.280000
。現在のタイムゾーンでISO形式の日付に変換したいと思います。私は単にnew Date()
を作成するときに動作するようにしましたが、その後.toISOString()
と呼ぶと、それは雑然としています。コードは次のとおりです。現在のタイムゾーンでセントラルタイムの日付をISO文字列に変換する
function convertCentralToLocal() {
const centralOffset = 360;
const dateInCentralMs = new Date('2017-11-19T23:39:35.280000').getTime();
const now = new Date();
const localOffset = now.getTimezoneOffset();
// this works: Sun Nov 19 2017 23:39:35 GMT-0600 (CST)
const d = new Date(dateInCentralMs + ((centralOffset - localOffset) * 60000));
// this seems to give the date six hours off: 2017-11-20T05:39:35.280Z
const iso = d.toISOString();
}
GMTの問題ですか?私は失われた気分です。
"CST"私は、米国中部標準時であり、キューバ標準時または中国標準時ではないと思います。米国のCSTは、UTC -0600です。組み込みパーサーを使用しないでください。[* Date.parseが間違った結果をもたらすのはなぜですか?*](https://stackoverflow.com/questions/2587345/why-does-date-parse-give-incorrect-results )* toISOString *メソッドは常にUTCですが、両方の文字列は同じ瞬間を表しますが、異なるタイムゾーンで表されます。また、[* JavaScriptの日付の書式設定に関するドキュメントはどこにありますか?*](https://stackoverflow.com/questions/1056728/where-can-i-find-documentation-on-formatting-a-date-in - ジャバスクリプト) – RobG