我需要从我拥有的日期的字符串值中减去1天, 例如,当我从2017/01/01减去一天而不是2016/12/31时,我最终得到的值为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,我怎样才能将一天减去2016/12/31的结果呢?
答案 0 :(得分: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;
答案 1 :(得分:0)
您可以直接从日期中减去:
var d = new Date('2017/01/01');
d.setDate(d.getDate() - 1);
var newDateString = d.toLocaleDateString();
console.log(newDateString);
答案 2 :(得分:0)
您可以使用setDate
方法减去所需的天数。
var inputDate = "2017/01/01";
var newDate = new Date(inputDate);
newDate.setDate(newDate.getDate() - 1);
console.log(newDate);
答案 3 :(得分: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。