我需要创建一个函数,它将一个字符串和x个(subDays)天作为参数,并将字符串转换为日期并从日期中减去x天。
输入字符串的格式为(YYYY-MM-DD),我希望能够恢复相同的格式。
我收到Invalid Date
错误。
function newDate(date, subDays) {
var myDate = new Date(date);
myDate.setDate(myDate -subDays);
console.log("Date: " + myDate);
}
答案 0 :(得分:3)
这是你可以做到的一种方式
console.log( toYMD( subDays( '2016-12-11', 3) ) );
function subDays(date, days) {
var dateArray = date.split('-');
var myDate = new Date(dateArray[0], dateArray[1] - 1, dateArray[2]);
return new Date(myDate.setDate(myDate.getDate() - days));
}
function toYMD(d) {
return d.getFullYear() + "-" +
padZero(d.getMonth()+1) + "-" +
padZero(d.getDate());
}
function padZero(v) {
return (v < 10) ? "0" + v : v;
}
&#13;
答案 1 :(得分:2)
建议不要使用Date构造函数的解析器,因为它可以依赖于实现,而不是一些广泛接受的格式。所以我们自己解析字符串。
通过使用getTime
获取毫秒并添加/减去毫秒来调整日期。
function newDate(date, subDays) {
function padZero(v) {
return (v < 10) ? "0" + v : v;
}
var dateArray = date.split('-').map(Number);
var myDate = new Date(dateArray[0], dateArray[1] - 1, dateArray[2]);
myDate = new Date(myDate.getTime() - subDays * 24 * 60 * 60 * 1000)
return myDate.getFullYear() + '-' + padZero(myDate.getMonth() + 1) + '-' + padZero(myDate.getDate());
}
console.log(newDate('2016-12-09', 8))
console.log(newDate('2016-12-09', 9))
答案 2 :(得分:0)
首先,您必须指定您要扣除的内容;试试这个: -
function newDate(date, subDays) {
var myDate = new Date(date);
myDate.setDate(myDate.getDate() -subDays);
console.log("Date: " + myDate);
}
答案 3 :(得分:0)
有一个名为datejs的包,您可以在Date对象上轻松使用addDays(),addHours(),addMinutes()。以下是API文档:https://code.google.com/archive/p/datejs/wikis/APIDocumentation.wiki
function newDate(date, subDays) {
const d = Date.parse(date).addDays(-parseInt(subDays));
return `${d.getFullYear()}-${d.getMonth()}-${d.getDay()}`;
}