如何获得当前日期前30天?

2022-08-30 04:55:12

我有一个开始日历输入框和一个结束日历输入框。我们希望默认的开始日历输入框在当前日期之前 30 天,结束日历输入框是当前日期。这是我的日期变量。

var today = new Date(),
    dd    = today.getDate(),
    mm    = today.getMonth(),
    yyyy  = today.getFullYear(),
    month = ["January", "February", "March",
        "April", "May", "June", "July", "August",
        "September", "October" "November", "December"],
    startdate = month[mm] + ", " + yyyy.toString();

结束日期将是这样的,显然这行不通。var enddate = startdate - 30;

因此,如果当前日期是2011年12月30日,我希望开始日期显示为2011年12月1日。

编辑:我的问题得到了解答...差不多吧。 并工作,但我需要格式的日期。不。有什么帮助吗?Date.today();Date.today().add(-30);January 13, 2012Fri Jan 13 2012 10:48:56 GMT -055 (EST)

更多编辑:在撰写本文时,这是2018年。只需使用Moment.js。这是最好的。


答案 1

要从 JS Date 对象中减去天数,可以使用该方法以及开始计算的日期。这将返回一个整数形式的纪元时间戳,因此要将其转换为 Date,您需要再次将其提供给对象构造函数。最后一个示例如下所示:setDate()Date()

var today = new Date();
var priorDate = new Date(new Date().setDate(today.getDate() - 30));

console.log(today)
console.log(priorDate);

答案 2

尝试使用优秀的 Datejs JavaScript 日期库(原来的不再维护,所以你可能对这个积极维护的分叉感兴趣):

Date.today().add(-30).days(); // or...
Date.today().add({days:-30});

[编辑]

另请参阅出色的 Moment.js JavaScript 日期库

moment().subtract(30, 'days'); // or...
moment().add(-30, 'days');