[解決済み】safariの日付が無効
質問
alert(new Date('2010-11-29'));
クローム、ffは問題ないのですが、サファリは"invalid date"と出ます。なぜでしょうか?
edit : OK、下のコメントにあるように、文字列解析を使用して、これを試してみました。
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
編集 2018年03月22日
: まだここに着地する人がいるようだ - 今日、私が使うのは
moment
または
date-fns
で終わりです。Date-fnsも非常に痛みがなく、軽いです。
解決方法は?
パターン
yyyy-MM-dd
は公式にサポートされているフォーマットではありません。
Date
コンストラクタを使用します。Firefoxはサポートしているようですが、他のブラウザが同じようにサポートするかどうかは当てにしないでください。
対応する文字列を紹介します。
- MM-dd-yyyy
- yyyy/MM/dd
- MM/dd/yyyy
- MMMM dd, yyyy
- MMM dd, yyyy
日付JS は、非標準の日付フォーマットをパースするための良いライブラリのようです。
編集 : 今確認しました ECMA-262規格 . 15.9.1.15項より引用。
日付時刻文字列の書式
<ブロッククオートECMAScript は、文字列を定義しています。 日付-時刻の交換フォーマット を簡略化したものです。 8601 拡張フォーマット このフォーマットは は以下の通りです。YYYY-MM-DDTHH:mm:ss.sssZ ここで、フィールドは以下の通りである。
- YYYY はグレゴリオ暦の西暦の小数点以下の数字です。
- quot;-"(ハイフォン)は文字列中に文字通り2回出現します。
- MMは01(1月)~12(12月)の月です。
- DD は 01 から 31 までの月の日数です。
- T"は、文字列の中に文字どおり表示され、その文字列が始まることを示します。 time 要素。
- HH は、午前0時から経過した完全な時間の数を2つで表します。 10進数で表示します。
- ":"(コロン)は文字列中に文字通り2回出現します。
- mmは、時間の開始からの完全な分数です。 10進数で2桁。
- ssは、「分」の開始からの完全な「秒」の数です。 を10進数2桁で表示します。
- ."(ドット)は文字列の中に文字通り現れます。
- sssは、1秒の始まりからの完全なミリ秒の数です。 秒を10進数3桁で表したものです。いずれも とミリ秒のフィールドがあります。 を省略することができる。
- Zは、"Z"(UTCの場合)または"+"または"-"で指定されるタイムゾーン・オフセットです。 の後に時間表現hh:mmが続きます。
この書式には、日付のみの書式も含まれます。
- YYYY
- YYYY-MM
- YYYY-MM-DD
また、時間帯のみのフォームで オプションでタイムゾーンオフセットが追加されます。
- THH:mm
- THH:mm:ss
- THH:mm:ss.sss
また、quot;date-times"も含まれます。 は、上記の任意の組み合わせとすることができる。
ということで、YYYY-MM-DDは標準に含まれているようですが、なぜかSafariは対応していないようです。
更新情報 を見てから datejs ドキュメント このようなコードで、あなたの問題は解決するはずです。
var myDate1 = Date.parseExact("29-11-2010", "dd-MM-yyyy");
var myDate2 = Date.parseExact("11-29-2010", "MM-dd-yyyy");
var myDate3 = Date.parseExact("2010-11-29", "yyyy-MM-dd");
var myDate4 = Date.parseExact("2010-29-11", "yyyy-dd-MM");
関連
-
[解決済み】このエラーの原因は何ですか - "Fatal error: ローカルgruntを見つけることができません"
-
[解決済み】Vueのテンプレートまたはレンダー関数が定義されていない 私はどちらも使っていないのですが?
-
[解決済み】JavaScriptで「無効な日付」のDateインスタンスを検出する
-
[解決済み] JavaScriptの日付の書式設定方法
-
[解決済み] JavaScriptで現在の日付を取得するには?
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] JavaScriptで日付の書式設定に関するドキュメントはどこにありますか?
-
[解決済み] シェルスクリプトでYYYY-MM-DD形式の日付にする
-
[解決済み] Androidで現在の時刻と日付を取得する方法
-
[解決済み] 日付から月名を取得する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Heroku:ノードアプリで「このアプリにはデフォルトの言語が検出されませんでした」エラーがスローされる
-
[解決済み】 Uncaught TypeError: data.push is not a function
-
[解決済み】JavaScriptで':'(コロン)は何をするのか?
-
[解決済み】webpack: モジュールが見つかりません。Error: 解決できない(相対パスで)
-
[解決済み】NodeJS "ESモジュールをロードするためにインポートを使用する必要があります。"
-
[解決済み】Javascriptのコールバック関数がFirefoxで「Callback is not a function」というエラーを投げる
-
[解決済み】ある要素を別の要素に移動させるには?
-
[解決済み】JavaScriptのボタンonclickが機能しない
-
[解決済み】 Uncaught Reference Error: stLight is not defined (in Chrome only)
-
[解決済み】Syntax error: JavaScriptの不正なreturnステートメント