在 JavaScript 中从日期减去天数、月数和年数

2022-08-30 05:28:58

有没有人知道一个简单的方法来约会(例如今天)并回到X天,X个月和X年?

我试过了:

var date = new Date();
$("#searchDateFrom").val((date.getMonth() -1 ) + '/' + (date.getDate() - 6) + '/' + (date.getFullYear() - 1));

但是我得到了一个负日期,例如今天输出是:

3/-3/2015

有什么建议吗?

谢谢。


答案 1

您只是从数字中减少值。因此,从 3(日期)中减去 6 将仅返回 -3。

您需要在日期对象中单独添加/删除时间单位

var date = new Date();
date.setDate( date.getDate() - 6 );
date.setFullYear( date.getFullYear() - 1 );
$("#searchDateFrom").val((date.getMonth() ) + '/' + (date.getDate()) + '/' + (date.getFullYear()));

答案 2

正如其他人所说,您正在从诸如 之类的方法返回的数值中减去,您需要重置日期变量上的这些值。我在下面创建了一个方法,可以为您完成此操作。它使用创建一个日期,该日期将使用当前日期进行初始化,然后根据传入的值设置日期,月份和年份。例如,如果您想返回6天,则像这样传递-6。如果不想设置值,请以零传递(或者可以设置默认值)。该方法将为您返回新日期(在Chrome和Firefox中测试)。date.getDate()new Date()var newdate = createDate(-6,0,0)

function createDate(days, months, years) {
        var date = new Date(); 
        date.setDate(date.getDate() + days);
        date.setMonth(date.getMonth() + months);
        date.setFullYear(date.getFullYear() + years);
        return date;    
    }