1. ホーム
  2. javascript

[解決済み] タイムゾーンなしで日付を解析する javascript

2022-04-29 01:13:17

質問

JavaScriptでタイムゾーンのない日付を解析したいのですが、どうすればいいですか?私は試してみました。

new Date(Date.parse("2005-07-08T00:00:00+0000"));

を返しました。 Fri Jul 08 2005 02:00:00 GMT+0200 (中央ヨーロッパ夏時間)です。

new Date(Date.parse("2005-07-08 00:00:00 GMT+0000"));

は同じ結果を返しますし

new Date(Date.parse("2005-07-08 00:00:00 GMT-0000"));

も同じ結果を返します。

時間をパースしたい。

  1. タイムゾーンなし
  2. コンストラクタを呼び出さない Date.UTC または新規 Date(year, month, day) .
  3. は、Date コンストラクタに文字列を渡すだけです (プロトタイプのアプローチはありません)。

Stringではなく、Dateオブジェクトを生成しなければならないのですが。

どのように解決するのですか?

日付は正しくパースされています。 toString で、ローカルタイムゾーンに変換されます。

let s = "2005-07-08T11:22:33+0000";
let d = new Date(Date.parse(s));

// this logs for me 
// "Fri Jul 08 2005 13:22:33 GMT+0200 (Central European Summer Time)" 
// and something else for you

console.log(d.toString()) 

// this logs
// Fri, 08 Jul 2005 11:22:33 GMT
// for everyone

console.log(d.toUTCString())

JavascriptのDateオブジェクトはタイムスタンプであり、単にエポックからのミリ秒数を含むだけです。Dateオブジェクトにはタイムゾーンの情報はありません。このタイムスタンプがどの日付 (日、分、秒) を表しているかは、解釈の問題です (以下のいずれかの方法で)。 to...String メソッド)を使用します。

上の例では、日付が正しくパースされていることがわかります。つまり、実際には GMT で "2005-07-08T11:22:33" に相当するミリ秒の量が含まれていることがわかります。