私は多くの "日付"に対処する必要があるプロジェクトに取り組んでいます。私は時々Javascriptを別のブラウザでは動作が異なりますことに気づく:javascriptはさまざまなブラウザで異なる動作をします
コード:
new Date("Mar 30, 2017".replace(',', '').replace(/ /g, '/'))
私は私が日付を作成するためにreplace
を使用する必要はありません知っているが、このコードは私のChromeとSafariのから興味深い異なる結果を与えます。
私が実行している間:
"Mar 30, 2017".replace(',', '').replace(/ /g, '/')
両方ChromeとSafariの意志は私に与えます:"Mar/30/2017"
を。しかし、私はDate
オブジェクトに結果をオンしようとすると、興味深い結果は次のようになります。
Chrome: Thu Mar 30 2017 00:00:00 GMT-0700 (PDT)
Firefox: Date 2017-03-30T07:00:00.000Z
Safari: Invalid Date
私はすでに両方のブラウザのJavascriptのバージョンをチェックして、彼らは同じバージョン(1.7)を使用しています。この点に関してChromeがSafariと異なる動作をする理由を誰でも説明できますか?
UPDATE 私は"Mar/30/2017"
は、有効な日付フォーマットではありません知っています。しかし、私の質問はで、JavaScriptは異なるブラウザで異なる動作をします。私の日付フォーマットについて不平を言っているそれらの答えのために。それに答える前に質問をお読みください。私は@Felix Klingの答えを取って、すべての答えにすべて同じことに感謝します。
はい、非標準の日付書式を 'new Date()'に渡すと、さまざまな結果が得られます。可能であれば、[標準形式](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date)を渡すか、文字列を完全に渡さないようにしてください。 – JJJ
SafariのJS実装では理解できないかもしれませんが、最初に「Mar/30/2017」という日付を作成する必要があります。[w3 date docs](https://www.w3schools.com) /jsref/jsref_obj_date.asp) –
'' Mar/30/2017 "'は、私が知っているどの仕様書でも有効な日付形式ではありません。ブラウザーは、あなたがここで見ることができるように、彼らが望むように、あるいはまったく解釈しないかもしれません。 – Timo