2

我有一个下面的 JS,我在其中获取用户允许从后端脚本输入的最大日期:

var max_date = new Date(pdate + " " + ptime);

其中 pdate 和 ptime 是从脚本中获取的。

现在我需要将最小日期设置为比 max_date 少 1 个月

if (max_date.getMonth() == 0)
subtractyear = 1;
var min_date = new Date(Date.UTC(max_date.getFullYear() - subtractyear,max_date.getMonth() - 1,max_date.getDate(),max_date.getHours(),0,0));

我的问题是,如果 max_date 是 3 月 31 日 - 那么 min_date 是否会滚动到 2 月 28 日或 2 月 29 日或 2 月 31 日或 2 月 30 日?

如果形成的日期不正确 - 比如 2 月 30 日,我该如何纠正?

4

1 回答 1

7

简单的 1 月份的主题将获得一个有效的日期——setMonth方法永远不会返回一个无效的Date对象(与setDate,setYearDate构造函数相同):

var date = new Date(2012, 02, 31); // 2012-03-31
date.setMonth(date.getMonth() - 1); // This gets 2012-03-02

我不太清楚您期望的日期是上个月的最后一天还是一个月前的一天

于 2012-08-14T09:24:41.947 回答