2012-01-12 17 views
48

私は開始カレンダー入力ボックスと終了カレンダー入力ボックスを持っています。デフォルトのカレンダー入力ボックスは、現在の日付の30日前に開始し、終了カレンダーの入力ボックスは現在の日付にします。ここに私の日付バールがあります。現在の日付より30日前に取得するには?

var today = new Date(), 
    dd = today.getDate(), 
    mm = today.getMonth(), 
    yyyy = today.getFullYear(), 
    month = ["January", "February", "March", 
     "April", "May", "June", "July", "August", 
     "September", "October" "November", "December"], 
    startdate = month[mm] + ", " + yyyy.toString(); 

終了日が明らかにvar enddate = startdate - 30;、これは動作しませんようなものになるだろう。

だから現在の日付が2011年12月30日である場合、私は開始日が12月1日、2011年

EDITを読みたいと思います。私の質問は一種の...答えました。 Date.today();およびDate.today()。add(-30);私は2012年1月13日の形式で日付が必要です。Not Fri Jan 13 2012 10:48:56 GMT -055(EST)。どんな助け?

+0

http://stackoverflow.com/questions/563406/add-days-to-datetime -using-java-script私はそれが助けるかもしれないと思う。 –

答えて

87

(あなたの代わりにthis actively maintained forkに興味がある可能性がありので、元はもはや維持されている)は、優れたDatejs JavaScript date libraryを使用してみてください:

Date.today().add(-30).days(); // or... 
Date.today().add({days:-30}); 

[編集]

にも優れMoment.js JavaScript date library参照:

moment().subtract(30, 'days'); // or... 
moment().add(-30, 'days'); 
+2

私はあなたのために10票を持っていたらいいのに... – Ryley

+0

なぜdownvote? – maerics

+0

Date.jsを私に教えていただきありがとうございます –

1

私はdate.jsを使用します。これは簡単にこれを処理し、すべての閏年の不毛を世話します。

33
startDate = new Date(today.getTime() - 30*24*60*60*1000); 

.getTime()メソッドは、通常の数値演算を使用できる標準JSタイムスタンプ(Jan 1/1970以降のミリ秒)を返します。これはDateオブジェクトに直接フィードバックできます。 @Neelで述べたように

+3

+1ですが、閏秒などの厄介なものを唱えます。 – maerics

+0

+1 - Datejsは読みやすくなります。これは実装が簡単です。 – Blazemonger

96

この

var today = new Date() 
var priorDate = new Date().setDate(today.getDate()-30) 

を試してみて、この方法ではJavascriptをタイムスタンプ形式で返します。それを日付オブジェクトに戻すには、上記を新しいDateオブジェクトに渡す必要があります。 new Date(priorDate)

私が好むでしょう
+11

外部ライブラリを使用しないと、私はこのソリューションが最高です。ありがとう。 – Gowiem

+9

このメソッドはJavascriptタイムスタンプ形式で返されることに注意してください。それを日付オブジェクトに変換するには、上記を 'new date(priorDate)'に渡す必要があります – Neel

1

瞬間JS

startDate = moment().subtract(30, 'days').format('LL') // January 29, 2015 

endDate = moment().format('LL'); // February 28, 2015 
34

ここにあなたのための醜いソリューションです:

var date = new Date(new Date().setDate(new Date().getDate() - 30)); 
+9

これはうまくいけば、最良の解決策です。 –

+13

Javascriptでは、誰もあなたの叫び声を聞くことができません... –

+1

合意 - これが最適な解決策です。これはRory McCrossanの答えの正確な*ですが、簡潔で完全です(外部ライブラリは必要ありません)。 –

関連する問題