ホームページ > ウェブフロントエンド > jsチュートリアル > Safari の日付解析の不一致: 日付の解釈が異なるのはなぜですか?

Safari の日付解析の不一致: 日付の解釈が異なるのはなぜですか?

Susan Sarandon
リリース: 2024-10-21 17:47:02
オリジナル
711 人が閲覧しました

Safari Date Parsing Inconsistencies: Why Does It Interpret Dates Differently?

Safari による日付の解釈の違い: 問題の理解

日付はプログラミングの基本要素であり、ブラウザー間でシームレスに日付を操作することが重要です。ただし、Safari で日付を操作する場合、不可解なエラーにつながる可能性のある不一致が発生する可能性があります。

そのようなシナリオの 1 つは、new Date() コンストラクターを使用して文字列から日付オブジェクトを作成するときに発生します。たとえば、次のコード スニペットでは:

<code class="javascript">alert(new Date('2010-11-29'));</code>
ログイン後にコピー

Chrome および Firefox ブラウザはこの文字列を正しく処理しますが、Safari は「無効な日付」エラーをスローします。この奇妙な動作により、多くの開発者が頭を悩ませています。

日付解析の不一致を明らかにする

この問題の根本原因を明らかにするために、日付文字列の変化を調べてみましょう。解析中。次のような文字列内の日と月のコンポーネントを交換しようとした可能性があります。

<code class="javascript">alert(new Date('11-29-2010')); //doesn't work in Safari
alert(new Date('29-11-2010')); //doesn't work in Safari
alert(new Date('2010-29-11')); //doesn't work in Safari</code>
ログイン後にコピー

残念ながら、これらの調整は Safari でも成功しません。

解決策Safari の誤解を回避する

コードをリファクタリングして代替日付ライブラリを実装することは魅力的かもしれませんが、より簡単な解決策が存在します。次のワンライナーを考えてみましょう:

<code class="javascript">console.log (new Date('2011-04-12'.replace(/-/g, "/")));</code>
ログイン後にコピー

このスニペットでは、日付文字列内の問題のあるダッシュがスラッシュに置き換えられています。この置換を利用することで、Safari は文字列を正しく解釈し、「無効な日付」エラーを解決します。

このアプローチは、簡潔でブラウザーに耐性のあるソリューションを提供し、複雑なライブラリの統合や非効率な正規表現操作の必要性を排除します。

以上がSafari の日付解析の不一致: 日付の解釈が異なるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート