2017-02-15 121 views
0

我需要從日期的字符串值中減去1天,例如當我從2017/01/01減去一天而不是2016/12/31時結束I結束達到2017/0/31的價值。從完整日期減去一天

下面是我工作的代碼:

   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是2017/0/31得到的值,我怎樣才能使每天減去至一十二分之二千○一十六結果/ 31呢?

+0

month is zero based ... add one to'nd.getMOnth()' - 你還需要從'splitClndr [1]中減去一個' –

回答

1

月在JavaScript是從零開始,所以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

您只需直接從日期。減去:

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