3

new Date("2")は:

  • Chromeの「2001年2月1日木曜日00:00:00GMT-0500(東部標準時)」
  • FirefoxおよびIE9の「無効な日付」
  • node.jsの「2001年2月1日木曜日05:00:00GMT」

node.jsはgoogleV8javascriptエンジンを使用しており、Chromeもgoogleのものであるため、これはグーグルな調整だと思います。

これは悪いです。Date異なるプラットフォーム間でタイプの動作を正規化する簡単な方法はありますか?

ありがとう。

編集

もちろん、「2」はデートには向いていません。ただし、jQueryバリデータープラグインの「date」メソッドを使用する場合、この特定の検証メソッドはロジックをDatejavascriptタイプに延期して実際の検証を行うため、「2」は完全に有効な入力です。Dateタイプの実装が賢明であれば、これは完全に理にかなっています。これは明らかにChrome(およびnode.js)には当てはまりません。

4

1 に答える 1

4

いいえ。ECMAScript仕様ではDate、そのパラメーターが文字列である単一パラメーターコンストラクターは、Date.parse「実装に依存する」ものに従うと規定されています。出典:ECMAScript仕様

したがって、実装間で同じ動作が必要な場合は、このコンストラクターの使用を避けてください。

アプリケーションで、文字列の意味が日付として認識さ"2"れている場合は、それを解釈するための独自のロジックを実装する必要があります。これには「標準」の意味はありません。文字列として世界全体でより認識しやすいものがある場合は、さまざまな実装がより類似して動作することがわかります。ただし、あなたの場合は、文字列を自分で解析2し、のより明示的なコンストラクターにその意味を明示的に提供することをお勧めしますDate

于 2012-09-03T18:00:02.897 に答える