IE 日付コンストラクターの問題: NaN と他のブラウザーの機能
JavaScript カレンダー開発を含むプロジェクト内で、次のブラウザ間の日付処理に矛盾が生じました。 Internet Explorer (IE) および Firefox や Chrome などのブラウザ。具体的には、IE の日付関数は NaN (Not a Number) 値を生成していましたが、他のブラウザでは正常に機能していました。
調査の結果、根本原因は使用されている日付形式に関連していることが明らかになりました。問題の関数 buildWeek() は、「m, d, Y」形式で指定された月曜日の日付 (たとえば、「02, 01, 2010」) に基づいて暦週のヘッダー日付を生成することを目的としていました。ただし、IE では、この形式が正しく認識されず、NaN 問題が発生しました。
この不一致を解決するために、別のアプローチが採用されました。指定された形式に依存する代わりに、split(" ") を使用して日付文字列がそのコンポーネント (日付と時刻) に分割されました。その後、日付コンポーネントは、split("-") を使用してその構成部分 (年、月、日) にさらに分割され、時間コンポーネントは、split(":") を使用してその部分 (時、分、秒) に分割されました。 .
次に、これらの解析された値を使用して Date のインスタンスが構築されました。この方法はすべてのブラウザと互換性があり、IE、Firefox、Chrome 全体で一貫した日付処理が保証されることが証明されました。
var dateStr = "2011-08-03 09:15:11"; //returned from mysql timestamp/datetime field var a = dateStr.split(" "); var d = a[0].split("-"); var t = a[1].split(":"); var date = new Date(d[0], (d[1] - 1), d[2], t[0], t[1], t[2]);
このアプローチを採用することで、IE の NaN エラーが解消され、すべてのブラウザで一貫した日付処理が実現しました。異なるブラウザ。
以上がIE の日付コンストラクターが Chrome や Firefox の日付処理と異なるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。