2016-05-03 24 views
19

日付を取ってX日、X月、X年を戻す簡単な方法を知っている人はいますか?JavaScriptの日付から日、月、年を差し引く

var date = new Date(); 
$("#searchDateFrom").val((date.getMonth() -1) + '/' + (date.getDate() - 6) + '/' + (date.getFullYear() - 1)); 

は、しかし、私は出力した今日、たとえば、負の日付を持って:

私はそれを試してみました

3/-3/2015

任意のアドバイス?

ありがとうございました。

+3

'date.get ....'は 'Number'を返し、別の' number'から数値を減算した場合、値は負の値になります(左の値が小さい場合)。 'DateObj.set ...'メソッドを使用してそれぞれの値を取得する... – Rayon

答えて

30

単純に値を数値から減らしています。したがって、3(日付)から6を引くと-3が返されます。あなたが個別に日付オブジェクトに他の人のよう

var date = new Date(); 
date.setDate(date.getDate() - 6); 
date.setFullYear(date.getFullYear() - 1); 
$("#searchDateFrom").val((date.getMonth()) + '/' + (date.getDate()) + '/' + (date.getFullYear())); 
+0

ありがとう、それは完璧に働いた! – user3378165

+1

getMonth()はゼロベースです。それは間違った月を示します。例:10は11月です。 – Tony

9

MomentJSライブラリの使用をお勧めします。彼らはDatesとのやり取りをもっと簡単にします。あなたはモーメントを使用している場合

、あなたのコードは、このような単純なものになります。あなたがここにMomentJSを見つけることができます

var today = moment(); 
var nextMonth = today.add('month', 1); 

http://momentjs.com/

UPDATE:JavaScriptで

、日付。 getDate()関数は、月の現在の日付を1-31から返します。あなたはこの数字から6を減算しています、そしてそれは今月の3日です。これにより値は-3になります。

+0

OPが提供しているコードに何が問題なのですか?あなたはそれを強調して気にしますか... – Rayon

+0

@Fvbありがとう、私はガイドを読んで、それは素晴らしいライブラリです、それを使用するためのアイデアをありがとう。 – user3378165

+0

moment.jsはアプリに約16kを追加します。通常は大したことではありません。しかし、パフォーマンスが重要であれば、普通の古いjsに固執することは、そのような小さな計算では安いです。 – shanemgrey

9

の時間の単位を追加/削除する必要があります

あなたはdate.getDate()のようなメソッドから返された数値から減算していると述べている、あなたはあなたにこれらの値をリセットする必要があります日付変数。私はあなたのためにこれを行う下のメソッドを作成しました。 new Date()を使用して日付を作成し、現在の日付で初期化し、渡された値に従って日付、月、および年を設定します。たとえば、6日後に戻る場合は、var newdate = createDate(-6,0,0)のように-6を渡します。値渡しを0に設定したくない場合(またはデフォルト値を設定することもできます)。このメソッドは新しい日付を返します(ChromeとFirefoxでテスト済み)。

関連する問題