1

この質問を読んだ後-ドキュメントへのリンクも提供していますが、ドキュメントについてまだ質問があります。

MDN:Date.parse

RFC2822またはISO8601の日付を表す文字列。

OK、RFC2282

date-time       =       [ day-of-week "," ] date FWS time [CFWS]
day-of-week     =       ([FWS] day-name) / obs-day-of-week
day-name        =       "Mon" / "Tue" / "Wed" / "Thu" /
                       "Fri" / "Sat" / "Sun"

date            =       day month year
year            =       4*DIGIT / obs-year
month           =       (FWS month-name FWS) / obs-month
month-name      =       "Jan" / "Feb" / "Mar" / "Apr" /
                        "May" / "Jun" / "Jul" / "Aug" /
                        "Sep" / "Oct" / "Nov" / "Dec"

day             =       ([FWS] 1*2DIGIT) / obs-day

-ISO8601

 Year:
      YYYY (eg 1997)
   Year and month:
      YYYY-MM (eg 1997-07)
   Complete date:
      YYYY-MM-DD (eg 1997-07-16)

Ok。

質問:

  • MDNは、2282にもISOにも見られない"Dec 25, 1995"パターンサンプル(動作中)を提供しました。このサンプルはどうして機能するのですか?順序は (2282による)でなければなりません。day month year

  • 標準のセパレーターは[space](2282年)および[-]ISOです。

    では、なぜこのサンプルが機能するのですか(クロスブラウザー)?Date.parse("2011/11/23")

4

1 に答える 1

1

についてDate.parseは、EcmaScript仕様のセクション15.9.4.2を参照してください。

文字列は、文字列の内容に応じて、現地時間、UTC時間、またはその他のタイムゾーンの時間として解釈される場合があります。この関数は、最初に、日時文字列形式(15.9.1.15)で呼び出されたルールに従って文字列の形式を解析しようとします。文字列がその形式に準拠していない場合、関数は実装固有のヒューリスティックまたは実装固有の日付形式にフォールバックする可能性があります。認識できない文字列または文字列の形式で不正な要素値を含む日付は、を返します。Date.parseNaN

したがって、MDNのMozilla固有のドキュメントはそれに非常に近いものです。公式の「EcmaScript日時文字列形式」はISO8601のサブセットです。それ以外の場合、GeckoブラウザはRFC 2822または他の何か(これにはが含まれる可能性があります"Dec 25, 1995")として解釈しようとします。"2011/11/23"最近のバージョンではそうかもしれませんが、これはクロスブラウザで実際に機能するのではないかと強く思います。

于 2012-12-08T19:01:26.260 に答える