1. ホーム
  2. ジャバスクリプト

[解決済み】文字列が日付の値であるかどうかを確認する

2022-04-01 17:36:23

質問

ある値が有効な日付であるかどうかを確認する簡単な方法は何ですか?

例えば、次のような値を持っています。 10-11-2009 , 10/11/2009 , 2009-11-10T07:00:00+0000 これらはすべて日付の値として認識されるはずであり、値 200 , 10 , 350 のように、日付の値として認識されないはずです。これを確認する最も簡単な方法は何でしょうか。これが可能であるとすれば、それは何でしょうか。なぜなら、タイムスタンプも許可されるからです。

解決方法は?

そうだろうか Date.parse() でいいのでしょうか?

相対するものを見る MDNドキュメンテーションページ .

Date.parse は、文字列の日付が有効であれば、タイムスタンプを返します。以下はその使用例である。

// /!\ from now (2021) date interpretation changes a lot depending on the browser
Date.parse('01 Jan 1901 00:00:00 GMT') // -2177452800000
Date.parse('01/01/2012') // 1325372400000
Date.parse('153') // NaN (firefox) -57338928561000 (chrome)
Date.parse('string') // NaN
Date.parse(1) // NaN (firefox) 978303600000 (chrome)
Date.parse(1000) // -30610224000000 from 1000 it seems to be treated as year
Date.parse(1000, 12, 12) // -30610224000000 but days and month are not taken in account like in new Date(year, month,day...)
Date.parse(new Date(1970, 1, 0)) // 2588400000
// update with edge cases from comments
Date.parse('4.3') // NaN (firefox) 986248800000 (chrome)
Date.parse('2013-02-31') // NaN (firefox) 1362268800000 (chrome)
Date.parse("My Name 8") // NaN (firefox) 996616800000 (chrome)