3

Internet Explorer 8で簡易機能Date.parse()がうまく動作しない。format で日付を検証するため に使用しています。
Date.parse()"MM/DD/YYYY"

  • _.isNaN(Date.parse("99/99/9999"))返品true- 日付が無効です
  • _.isNaN(Date.parse("01/01/1990"))return false- 日付は有効です

しかし、今は IE 8 で JavaScript を試しましたが、混乱しています。

  • "88/88/8888"- この日付はすべて正常に機能しています - 日付が無効です。
  • "13/35/2012"- 無効な日付ですが、Date.parse("13/35/2012")この日付は IE でのみ解析され、返されませんNaN

jsFiddle デモ

何か案は?

4

3 に答える 3

3

標準の JavaScript は RFC 2822 の日付のみを受け入れますが、これはそのようには見えません。独自のコードを記述して、日付部分を分離し、それらを数値に変換して、そのようにDateインスタンスを作成する必要があります。

Internet Explorer は ISO 日付 (2012-09-20 08:22) もサポートしており、実際には「MM/DD/YYYY」の日付を解析します。JavaScript に関する限り、完全に有効な日付である「2012 年 13 月 35 日」の日付に対してそれを行っています。これは 2013 年 2 月 4 日です。JavaScript は偽の日付を「修正」します。年の 13 番目の月は翌年の最初の月であり、その月の 35 日 (1 月の場合は 31 日) は翌月の 4 日です。

基本的に、日付パーサーが実際とは異なる動作をすることを期待しています。

于 2012-09-20T13:20:34.487 に答える
1

ここここここを見てください。一般Date.parse()に、クロス ブラウザ ソリューションではありません。利用可能なプラグインとライブラリはたくさんあります。ググってみてください。

于 2012-09-20T13:22:26.237 に答える
0

日付の検証に私の方法を使用しました

   var isValidDate = function(dateAsString)
   {
      var parsedDate = Date.parse(dateAsString);
      if (_.isNaN(parsedDate) || !_.isEqual(new Date(parsedDate).format("mm/dd/yyyy"), dateAsString))
      {
         return false
      }

      return true
   }
于 2012-09-25T12:24:46.927 に答える