如何在当前date前30天获得?

我有一个开始日历input框和一个结束日历input框。 我们希望在当前date之前30天的默认开始日历input框和结束日历input框是当前date。 这是我的datevariables。

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(); 

结束date将是类似var enddate = startdate - 30; 显然这是行不通的。

所以如果当前date是2011年12月30日,我想要开始date为2011年12月1日。

编辑:我的问题被回答…有点。 Date.today(); 和Date.today()。add(-30); 工作,但我需要格式为2012年1月13日。不是周一2012年1月13日10:48:56 GMT -055(美国东部时间)。 任何帮助?

尝试使用优秀的Datejs JavaScriptdate库 (原始不再保留,所以你可能会对这个主动维护的叉感兴趣):

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

[编辑]

另请参阅优秀的Moment.js JavaScriptdate库 :

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

尝试这个

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

正如@Neel所指出的,这个方法以JavaScript时间戳格式返回。 要将其转换回date对象,您需要将上述内容传递给新的Date对象; new Date(priorDate)

 startDate = new Date(today.getTime() - 30*24*60*60*1000); 

.getTime()方法返回一个标准的JS时间戳(自1970年1月1日以来的毫秒),你可以使用常规的math运算,直接反馈给Date对象。

这是你的一个难看的解决scheme:

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

我使用date.js。 它很容易处理,照顾所有的闰年的肮脏。

我会更喜欢js

 startDate = moment().subtract(30, 'days').format('LL') // January 29, 2015 endDate = moment().format('LL'); // February 28, 2015