new Date("2017-01-01") と new Date("2017-1-1") の違いは何ですか?[重複】しています。]
2023-10-03 08:57:18
質問内容
I 入力
new Date("2017-01-01")
を入力すると、出力はその時間が8であることを示しますが
new Date("2017-01-1")
と
new Date("2017-1-01")
は、その時間が両方とも0であることを示しています。
new Date(dateString)
はどのようにパースするのでしょうか?
new Date("2017-01-01")
// Sun Jan 01 2017 08:00:00 GMT+0800 (中国标准时间)*
new Date("2017-01-1")
// Sun Jan 01 2017 00:00:00 GMT+0800 (中国标准时间)*
new Date("2017-1-1")
// Sun Jan 01 2017 00:00:00 GMT+0800 (中国标准时间)*
new Date("2017-1-01")
// Sun Jan 01 2017 00:00:00 GMT+0800 (中国标准时间)*
どのように解決するのですか?
"2017-01-01"に従います。
ES5 日付時刻文字列フォーマット (ISO 8601 Extended Formatの簡略化)
という文字列は、UTC時間であり、中国では午前8時です。それ以外の文字列は、Chromeでは現地時間として解析されます。
1
.
1 Chromiumの関連するソースコードです。 https://cs.chromium.org/chromium/src/v8/src/dateparser-inl.h?type=cs&l=16
Chromiumの日付の解析は、ES5の標準的なルールだけでなく、これらの特別なルールにも従います。
- 最初の数字の前にある認識できない単語は無視されます。
- 括弧で囲まれたテキストは無視されます。
-
符号なし数字で、その後に
:
は時間値であり、この値にTimeComposer
. に続く数値は::
は2つ目の0も追加します。数字の後に.
は時間でもあり、ミリ秒が続かなければなりません。それ以外の数値は日付の構成要素であり、その後にDayComposer
. -
月の名前 (または本当に: 月の名前と同じ最初の 3 文字を持つすべての単語) は、名前付き月として
Day
コンポーザーに記録されます。 -
時間帯として認識される単語は、そのように記録されます。
(+|-)(hhmm|hh:)
. -
レガシーな日付は余分な符号を許しません (
+
または-
) または一致しない)
が読み込まれた後 (最初の数字の前では、どんなゴミでも許されます)。 -
ES5ルールと上記のルールを満たす文字列は、ES5ルールを使ってパースされます。これはつまり
"1970-01-01"
はローカルタイムゾーンではなく、UTC タイムゾーンになります。
どういう意味ですか?
まず、"2017-01-01"がUTC時間でパースされるのは、"date-time"文字列ではなく、"date"文字列で、ES5の定義に合致することに注目してください。もしtimeが添付されていれば、ISO標準に従ってローカルタイムでパースします。
例を挙げます。
-
2017-01-01
- UTC時間では2017年1月1日 -
2017-01-01T00:00
- 現地時間で2017年1月1日 -
2017-1-1
- 現地時間で2017年1月1日 -
2017-(hello)01-01
- 現地時間で2017年1月1日 -
may 2017-01-01
- 現地時間で2017年5月1日 -
mayoooo 2017-01-01
- 現地時間で2017年5月1日 -
"jan2017feb-mar01apr-may01jun"
- 現地時間で2017年6月1日
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] とは何ですか! (not not)演算子とは何ですか?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] HTML5のlocalStorageにオブジェクトを格納する方法は?
-
[解決済み] .prop() vs .attr()
-
[解決済み] AngularJSでデータバインディングはどのように機能するのですか?
-
[解決済み] Bowerとnpmの違いは何ですか?
-
[解決済み】JavaScript版sleep()とは?)
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Javascriptの日付オブジェクトは、常に1日ずれているのですか?
-
[解決済み] JSのDateからDay名
-
[解決済み] JavaScript で範囲を作成する - 奇妙な構文
-
[解決済み] jqueryでdivの要素がオーバーフローしていないかチェックする
-
[解決済み] なぜJavaScriptでは!{}[true]がtrueに評価されるのですか?
-
[解決済み] JSXとLoadshを使用して、ある要素をn回繰り返す方法
-
[解決済み] javascript includes() 大文字小文字を区別しない
-
[解決済み] Javascriptで動的に命名されたメソッドを呼び出すにはどうすればよいですか?
-
[解決済み] 各オブジェクトに?重複
-
[解決済み] なぜ「2016-02-16」は「2016-02-16 00:00」と同じにならないのですか?