在转换日期中添加 30 天会在浏览器的控制台日志中给我无效日期消息



我已将时间戳4/1/2021 00:00转换为格式Thu Apr 01 2021 00:00:00 GMT-0500 (Central Daylight Time),如下代码所示。然而,增加30天并不能给我合适的结果。



//Handling Date String: 4/1/2021 00:00
function setStart(input) {
if (!(input instanceof Date))
console.log('Handling Date String:' +input)
input = new Date(Date.parse(input));
input.setHours(0);
input.setMinutes(0);
input.setSeconds(0);
input.setMilliseconds(0);
start = input;
return start;        
}

var initialDate = setStart('4/1/2021 00:00'); 
console.log("Printing converted date below:"); 
console.log(setStart('4/1/2021 00:00'));

var date = new Date(); // Now
//date.setDate(date.getDate() + 30); // Set now + 30 days as the new date
date.setDate(initialDate + 30);
console.log("Printing date after adding 30 days below")
console.log(date);

/* var getDaysArray = function(start, end) {
for(var arr=[],dt=new Date(start); dt<=new Date(end); dt.setDate(dt.getDate()+1)){
arr.push(new Date(dt));
}
return arr;
};
var daylist = getDaysArray(new Date("2018-05-01"),new Date("2018-06-01"));
console.log(daylist); */

浏览器控制台打印如下:

Handling Date String:4/1/2021 00:00
Printing converted date below:
Handling Date String:4/1/2021 00:00
Thu Apr 01 2021 00:00:00 GMT-0500 (Central Daylight Time)
Printing date after adding 30 days below
Invalid Date

是什么原因导致它打印Invalid Date

您想在initialDate后30天后获得日期,不是吗
请参阅此

var date = new Date(initialDate); // Now
//date.setDate(date.getDate() + 30); // Set now + 30 days as the new date
date.setDate(date.getDate() + 30);
console.log("Printing date after adding 30 days below")
console.log(date);

您应该有类似的东西

var date = new Date().getTime(); // Now
const offset = 30*23*3600*1000;
const newDate = new Date(date+offset).toLocaleString('en-US', {timeZone: 'CST'}); // Change added
console.log("Printing date after adding 30 days below")
console.log(newDate);

最新更新