2017-02-15 6 views
0

私は、日付の文字列値から1日減算する必要があります。例えば、 は、2016/12/31を取得する代わりに2017/01/01から1日を引いたときです。 2017/0/31の値を取得します。以下は完全日から1日を引く

私が働いているコードです:

   var inputDate = "2017/01/01"; 
       var splitClndr = inputDate.value.split("/"); 
       var clndrDate = new Date(splitClndr[0], splitClndr[1], splitClndr[2]); 
       clndrDate.setDate(clndrDate.getDate() - 1); 
       var nd = new Date(clndrDate); 
       var dd = nd.getDate(); 
       var mm = nd.getMonth(); 
       var y = nd.getFullYear(); 
       var newFormattedDate = y + '/'+ mm + '/'+ dd; 
       operatorDate.value = newFormattedDate; 

私は変数newFromattedDateに入る値は、私が12分の2016に日を減算した結果を作ることができるか、2017/0/31です/ 31代わりに? JavaScriptで

+0

月はゼロになります... 'nd.getMOnth()'に1を加えてください - あなたは 'splitClndr [1]'から1を引く必要があります –

答えて

1

ヶ月間はゼロベースされているので、0は1月です:

new Date(2017, 1, 1) >> Wed Feb 01 2017 

あなたは両方のときにclndrDateを作成し、あなたの文字列を連結する場合、これを補償する必要があります。

new Date(splitClndr[0], splitClndr[1]-1, splitClndr[2]) 

... 

var mm = nd.getMonth()+1; 
+0

あなたのソリューションは完璧に働いてくれて、ありがとう – Gintoki

0

あなただけの日から直接substractことができます。

var d = new Date('2017/01/01'); 
d.setDate(d.getDate() - 1); 
var newDateString = d.toLocaleDateString(); 
console.log(newDateString); 
0

あなたがしたい日数を減算するsetDateメソッドを使用することができます。

var inputDate = "2017/01/01"; 
var newDate = new Date(inputDate); 
newDate.setDate(newDate.getDate() - 1); 
console.log(newDate); 
0

var inputDate = "2017/01/01"; 
    var splitClndr = inputDate.split("/"); 
    var clndrDate = new Date(splitClndr[0], splitClndr[1] - 1, splitClndr[2]); 
    var past_time = clndrDate.getTime() - 1000 * 60 * 60 * 24 * 1; // last 1 will be day 
    clndrDate.setTime(past_time); 
    console.log(clndrDate); 

jsfilddleを協力して、これを試してみてください。

関連する問題