[解決済み] Date.parseが不正確な結果を出すのはなぜですか?
質問
ケース・ワン
new Date(Date.parse("Jul 8, 2005"));
出力します。
2005年7月8日(金)00:00:00 GMT-0700 (PST)
ケース2
new Date(Date.parse("2005-07-08"));
出力します。
2005年7月7日(木)17:00:00 GMT-0700 (PST)
なぜ2番目のパースが正しくないのですか?
解決方法は?
第5版の仕様が出るまでは
Date.parse
メソッドは完全に
実装依存
(
new Date(string)
は、以下のものと同等です。
Date.parse(string)
の代わりに数値を返すことを除けば、後者は
Date
). 第5版の仕様書では、この要件に加えて
簡略化
(そして若干不正確)
ISO-8601
(また
JavaScriptで有効な日付時刻文字列は何ですか?
). しかし、それ以外には
いいえ
を要求している。
Date.parse
/
new Date(string)
を受け入れるしかなかった。
Date#toString
を出力する(それが何であるかは明言しない)。
ECMAScript 2017 (第 8 版) の時点で、実装はその出力をパースするために
Date#toString
と
Date#toUTCString
が、その文字列のフォーマットは指定されていない。
ECMAScript 2019 (第9版) の時点では、以下のような形式です。
Date#toString
と
Date#toUTCString
と指定されている。
-
ddd MMM DD YYYY HH:mm:ss ZZ [(タイムゾーン名)]。
例:Tue Jul 10 2018 18:39:58 GMT+0530 (IST) -
ddd, DD MMM YYYY HH:mm:ss Z
例)2018年7月10日(火)13:09:58 GMT
さらに2つのフォーマットを提供することで
Date.parse
は新しい実装で確実にパースできるはずです(サポートはどこでもできるわけではなく、非準拠の実装がしばらくは使われ続けることに注意してください)。
日付文字列は手動でパースすることをお勧めします。 日付コンストラクタ は、曖昧さを避けるために、年、月、日の引数で使用されます。
// parse a date in yyyy-mm-dd format
function parseDate(input) {
let parts = input.split('-');
// new Date(year, month [, day [, hours[, minutes[, seconds[, ms]]]]])
return new Date(parts[0], parts[1]-1, parts[2]); // Note: months are 0-based
}
関連
-
Vueのクラススタイルの使い方の詳細
-
フロントエンド非同期(アシンク)ソリューション(全ソリューション)
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] この2回(1927年)を引き算すると、なぜおかしな結果になるのでしょうか?
-
[解決済み] なぜGoogleはJSONレスポンスにwhile(1);を前置するのでしょうか?
-
[解決済み] 私のJavaScriptコードは "No 'Access-Control-Allow-Origin' header is present on requested resource "というエラーを受け取りますが、Postmanはそうならないのはなぜですか?
-
[解決済み] JSONPとは何か、なぜ作られたのか?
-
[解決済み] AngularJSでデータバインディングはどのように機能するのですか?
-
[解決済み] なぜ ++[[]][+[] +[+[]] は "10" という文字列を返すのでしょうか?
-
[解決済み] タイムゾーンなしで日付を解析する javascript
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Vueはランニングライト形式のテキストを水平方向にスクロールする機能を実装している
-
vue3.0プロジェクトのアーキテクチャを構築するための便利なツール
-
VUEグローバルフィルターの概念と留意点、基本的な使い方
-
Vueの「データを聴く」原則を解説
-
[解決済み】React - uncaught TypeError: 未定義のプロパティ 'setState' を読み取れない
-
[解決済み] Error : 未定義のプロパティ 'map' を読み取ることができません。
-
[解決済み】Node Version Manager のインストール - nvm コマンドが見つかりません。
-
[解決済み】React - TypeError: 未定義のプロパティ 'props' を読み取ることができない。
-
[解決済み】エラー。Ionic使用中にモジュール '../lib/utils/unsupported.js' が見つかりませんでした。
-
OSSアップロードエラーを解決する: net::ERR_SSL_PROTOCOL_ERROR