2017-10-12 25 views
1

私はJS関数を使用して、月の次の利用可能な1日であるvar日付を宣言していました。すなわち今日は11/01/2017(mm/dd/yyyy)になります。この機能は完全に機能していましたが、IE 11以降では機能しませんでした。代わりにフォームが有効な日付ではないと拒否する機能を追加しましたが、Chromeでは完全に機能しました。 11/1/2017,%2012:00:00%20AM..:出力があるしかしIEとChromeのToLocaleDateString()の回避策

アイブ氏は、両方のブラウザで動作し、次のコード..

//Calculate and assign next available 1st day of the month 
var date = new Date(); 
firstDay = new Date(date.getFullYear(), date.getMonth()+1, 1); 
firstDay = (new Date(firstDay).toLocaleString('en-US').replace(/[^ -~]/g,'')); 

を変更しました。 「,%2012:00:00%20AM」を削除するにはどうすればよいですか?ちょうど整理整頓のために、上記のコードを変更するにはどうすればよいですか?ユーザデータに沿って通過されたURLは

+0

11/1/2017を表示したいだけではわかりません。何らかの理由で、変数firstDayが日付でなければならないのですか? firstDay = date.getDate()+ '/' +(date.getMonth()+ 1) '/' + date.getFullYear()と書くことができます。それとも別のものが欲しいの? –

+0

またはさらには firstDay =(新しい日付(firstDay).toLocaleString( 'en-US'))サブストリング(0,10); –

答えて

3

Date.toLocaleStringがを受け入れますあなたの出力をどのようにして宣言することができるかを指定するパラメータです。あなたのケースでは

あなたが{day: 'numeric', month:'numeric', year:'numeric'}をお勧めします:

var date = new Date(); 
 
firstDay = new Date(date.getFullYear(), date.getMonth() + 1, 1); 
 
firstDay = new Date(firstDay).toLocaleString('en-US', { 
 
     day: 'numeric', 
 
     month: 'numeric', 
 
     year: 'numeric' 
 
    }).replace(/[^ -~]/g,''); 
 
console.log(firstDay);
(実際にオプションなし Date.toLocaleDateStringと同じになる)

+0

完全に動作しますが、IEはそれを取ることはありません。画面上に出力を得ています:無効なGETデータです。これは、最後の関数の初期の問題です。= 11/1/2017 ..その日付は、 '='の前に見えない文字を示していますが、私はいつもURLの2回backspaceを押す必要があり、このコメントボックスでも上記のコードスニペットに.replaceを追加することができるので気づきましたか? – sanitizer

+0

@サニタイザー確かに、私はそれを元に戻しました、私はそれが何をしたのか分かりませんでした。 – Kaiido

+2

それについて教えてください.. IEは痛みです。また、.replaceを追加すると問題がソートされ、上記のコードスニペットはchromeとIEの両方で完全に機能します。ありがとうございました – sanitizer

1

あなたはtoLocaleDateStringを使用することができ、これはロケールの形式であなただけの日付部分を与えるだろう。

var d = new Date(); 
 

 
console.log(d.toLocaleDateString("en-US"));

1

あなたは

firstDay = date.getDate() + '/' + (date.getMonth() + 1) '/' + date.getFullYear(). 

を使用することができますいずれかまたは

firstDay = new Date(firstDay).toLocaleString('en-US') 
関連する問題