「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > JavaScript の日付コンストラクターを使用するときに Internet Explorer で NaN エラーが発生する原因は何ですか?

JavaScript の日付コンストラクターを使用するときに Internet Explorer で NaN エラーが発生する原因は何ですか?

2024 年 11 月 9 日に公開
ブラウズ:415

What Causes NaN Errors in Internet Explorer When Using JavaScript\'s Date Constructor?

IE の Date コンストラクターの誤動作: ブラウザ間の比較

Web 開発の分野では、JavaScript の Date コンストラクターが問題であることが証明されています。日付を操作しようとする開発者にとって頼もしい味方です。ただし、主要なブラウザーでこのコンストラクターを使用すると、興味深い現象が観察されています。 Firefox と Chrome は Date の機能を喜んで採用していますが、Internet Explorer は、特定の日付操作で NaN (Not-a-Number) を返してつまずくことが知られています。

この謎を解明するために、によって観察された特定の問題を詳しく掘り下げてみましょう。カレンダーを作成する開発者。 PHP 形式の日付文字列 ('m, d, Y') からの Date 構築は Firefox と Chrome では問題なく機能しましたが、IE は NaN 癇癪を起こすことを主張しました。

日付構築の問題

function buildWeek(dateText){
    var headerDates='';
    var newDate = new Date(dateText);

    for(var d=0;d

問題の根本は日付形式にあります。 IE は日付をネイティブ形式 ('YYYY-MM-DD') で解析できますが、このコードで使用されている 'm, d, Y' 形式に直面すると困難になります。

解決策:日付形式の標準化

ブラウザ間での互換性を確保するには、日付の構築で使用される日付形式を標準化することが不可欠です。推奨されるアプローチは、日付文字列を IE が容易に理解できる形式に変換することです。便利なオプションの 1 つは、split() メソッドを利用して日付文字列を分析し、個々のコンポーネントを Date コンストラクターに渡すことです。

たとえば、MySQL の日付時刻/タイムスタンプ フィールドが「2011-」のような文字列を返すと仮定します。 08-03 09:15:11" の場合、次のコード スニペットは、IE との互換性のために形式を正規化します。

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]);

これを採用することでこのアプローチを使用すると、Date 操作がすべての主要なブラウザーで適切に動作し、コードに大損害を与える可能性のある不可解な NaN エラーを排除できます。

リリースステートメント この記事は次の場所に転載されています: 1729402280 権利侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3