1. ホーム
  2. javascript

[解決済み] New Date()はChromeでは動作するが、Firefoxでは動作しない。

2023-01-01 18:04:46

質問

以下のようなdatetime文字列を作成しています。 2010-07-15 11:54:21

そして、次のコードで、私はFirefoxで無効な日付を取得しますが、Chromeで正常に動作します。

var todayDateTime = year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + seconds;
var date1 = new Date(todayDateTime);

firefoxではdate1が無効な日付を表示しますが、chromeでは正常に動作しています。主な原因は何でしょうか?

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

日付オブジェクトは好きなようにインスタンス化することはできません。特定の方法でなければなりません。以下は有効な例です。

new Date() // current date and time
new Date(milliseconds) //milliseconds since 1970/01/01
new Date(dateString)
new Date(year, month, day, hours, minutes, seconds, milliseconds)

または

d1 = new Date("October 13, 1975 11:13:00")
d2 = new Date(79,5,24)
d3 = new Date(79,5,24,11,33,0)

Chromeの方が柔軟性があるだけでしょう。

ソースはこちら https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date

から アプサイダー のコメントです。

EMCAScript の仕様 は正確に一つの日付形式を要求します (すなわち YYYY-MM-DDTHH:mm:ss.sssZ) を要求していますが の実装では、独自の日付形式を自由にサポートすることができます。 : " String が [ECMAScript-defined] 形式に適合しない場合、この関数は実装固有のヒューリスティックや実装固有の日付形式にフォールバックすることがあります。 Chrome と FF では、単に実装固有の日付形式が異なるだけです。