[解決済み] DateコンストラクタはIEではNaNを返すが、FirefoxとChromeでは動作する
2023-07-28 11:11:34
質問
私は JavaScript で小さなカレンダーを作ろうとしています。私はFirefoxとChromeで素晴らしい仕事をしている私の日付を持っていますが、IEでは日付関数がNaNを返しています。
ここに関数があります。
function buildWeek(dateText){
var headerDates='';
var newDate = new Date(dateText);
for(var d=0;d<7;d++){
headerDates += '<th>' + newDate + '</th>';
newDate.setDate(newDate.getDate()+1);
}
jQuery('div#headerDates').html('<table><tr>'+headerDates+'</tr></table>');
}
dateText
は現在の週の月曜日で、実際には php で 'm, d, Y' の形式で設定されます、例えば
"02, 01, 2010"
.
どのように解決するのですか?
Dateコンストラクタは任意の値を受け取ります。引数のプリミティブ[[value]]がnumberの場合、生成されるDateはその値を持ちます。プリミティブ[[value]]がStringの場合、DateコンストラクタとparseメソッドがDate.prototype.toStringとDate.prototype.toUTCString()の結果をパースできることだけを保証する仕様になっています。
Dateを設定する信頼できる方法は、Dateを構築して
setFullYear
と
setTime
メソッドを使用します。
その例がここに表示されます。 http://jibbering.com/faq/#parseDate
ECMA-262 r3 では、日付の書式は定義されていません。DateコンストラクタやDate.parseに文字列を渡すと、実装に依存した結果になります。避けたほうがよいでしょう。
編集する comp.lang.javascriptのFAQからのエントリは。 拡張ISO 8601ローカル日付フォーマット
YYYY-MM-DD
をパースすることができます。
Date
を次のようにします:-)
/**Parses string formatted as YYYY-MM-DD to a Date object.
* If the supplied string does not match the format, an
* invalid Date (value NaN) is returned.
* @param {string} dateStringInRange format YYYY-MM-DD, with year in
* range of 0000-9999, inclusive.
* @return {Date} Date object representing the string.
*/
function parseISO8601(dateStringInRange) {
var isoExp = /^\s*(\d{4})-(\d\d)-(\d\d)\s*$/,
date = new Date(NaN), month,
parts = isoExp.exec(dateStringInRange);
if(parts) {
month = +parts[2];
date.setFullYear(parts[1], month - 1, parts[3]);
if(month != date.getMonth() + 1) {
date.setTime(NaN);
}
}
return date;
}
関連
-
[解決済み] Androidで現在の時刻と日付を取得する方法
-
[解決済み] Safari、Chrome、IE、Firefox、Operaのブラウザを検出する方法は?
-
[解決済み】JavaScriptで現在の日付と時刻を取得する
-
[解決済み】IEでは'innerText'が機能するが、Firefoxでは機能しない。
-
[解決済み] AngularJSのエラーです。Cross Origin リクエストはプロトコルスキーム http, data, chrome-extension, https に対してのみサポートされています。
-
[解決済み] bootstrap のポップオーバーがすべての要素の上に表示されない
-
[解決済み] node.jsで文字列のsha1ハッシュを取得するにはどうすればよいですか?
-
[解決済み] JavaScriptで:hoverのCSSプロパティを変更する
-
[解決済み] javascriptで文字列から関数を作成する方法はありますか?
-
[解決済み] モデルフェッチ時に1をtrueに、0をfalseに変換する方法
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Date.parseが不正確な結果を出すのはなぜですか?
-
[解決済み] AngularJSのエラーです。Cross Origin リクエストはプロトコルスキーム http, data, chrome-extension, https に対してのみサポートされています。
-
[解決済み] Javascriptによるタッチスクリーンデバイスの検出
-
[解決済み] なぜJavaScriptでは!{}[true]がtrueに評価されるのですか?
-
[解決済み] javascriptで2つの数値を連結する方法は?
-
[解決済み] Javascript 空の配列の削減
-
[解決済み] AngularJS - ngRepeatフィルタリングされた結果の参照を取得する方法
-
[解決済み] $.ajax実行中にローディングイメージを表示する
-
[解決済み] 文字列とラベルのローカライズとグローバリゼーションのベストプラクティス【終了しました
-
[解決済み] Fetch: ステータスがOKでない場合、プロミスを拒否し、エラーをキャッチするか?