Safari の日付解析の癖
「2010-11-29」のような形式の日付に遭遇すると、Safari が「無効な日付」エラーをスローするのはなぜですか」と表示されますが、他のブラウザではこれらの日付が問題なく処理されますか?この一貫性のない動作は、Web 開発者にとってイライラする可能性があります。
問題の根本は、日付文字列内のダッシュ (-) の Safari の解釈にあります。ほとんどのブラウザはダッシュを日付区切り文字として認識しますが、Safari はダッシュを誤って日付自体の一部として扱い、誤った日付計算を引き起こします。
説明するには、次の文字列解析を試みてください:
alert(new Date('2010-29-11')); // Doesn't work in Safari alert(new Date('29-11-2010')); // Doesn't work in Safari alert(new Date('11-29-2010')); // Doesn't work in Safari
ご覧のとおり、Safari はコンポーネントの順序に関係なく、これらの日付を正しく解析できません。
Moment.js や date-fns などの別個のライブラリを利用することが、この問題を軽減するオプションになる可能性があります。もっと簡単な解決策が利用可能です。ダッシュをスラッシュ (/) に置き換えるだけで、Safari は日付文字列を正しく解釈できるようになります。
console.log(new Date('2011-04-12'.replace(/-/g, "/")));
この 1 行の修正により、Safari は日付を期待どおりの形式で解析できるようになり、Web アプリケーションで日付を表示したり、複数のブラウザ間で一貫して日付を操作します。
以上がSafari が「2010-11-29」形式の日付を処理できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。