我正试图形成一个日期,这是3个月前的当前日期。我通过下面的代码得到当前月份

var currentDate = new Date();
var currentMonth = currentDate.getMonth()+1;

你能给我提供一个逻辑来计算和形成一个日期(date数据类型的对象),考虑到当月份是一月(1)时,日期前3个月将是十月(10)吗?


当前回答

因为我似乎没有看到它已经建议....

const d = new Date();
const day = d.getDate();
const goBack = 3;
for (let i = 0; i < goBack; i++) d.setDate(0);
d.setDate(day);

这将为您提供3个月前的今天的日期,因为. setdate(0)将日期设置为上个月的最后一天,而不管一个月包含多少天。Day用于恢复今天的日期值。

其他回答

var d = new Date(); 文档。写(d + "<br/>"); d.setMonth(d.getMonth() - 6); document . write (d);

这样做

 let currentdate = new Date();
 let last3months = new Date(currentdate.setMonth(currentdate.getMonth()-3));

Javascript的setMonth方法也负责年份。例如,如果currentDate设置为new Date("2020-01-29"),上述代码将返回2020-01-29。

d.setMonth在浏览器try中修改了本地时间

 const calcDate = (m) => {
    let date = new Date();
    let day = date.getDate();
    let month = date.getMonth() + 1;
    let year = date.getFullYear();
    let days = 0;

    if (m > 0) {
      for (let i = 1; i < m; i++) {
        month += 1;
        if (month > 12) {
          year += 1;
          month = 1;
        }
        days += new Date(year, month, 0).getDate();
      }
    } else {
      for (let i = m; i < 0; i++) {
        month -= 1;
        if (month < 1) {
          year -= 1;
          month = 12;
        }
        days -= new Date(year, month, 0).getDate();
      }
    }

    const newTime = date.getTime() + 3600 * 24 * 1000 * days;
    return new Date(newTime);
  };

calcDate(3)//+3 month

这是最小和最简单的代码。

   var minDate = new Date(); 
   minDate.setMonth(minDate.getMonth() - 3);

声明具有当前日期的变量。 然后通过使用setMonth内置函数,我们可以得到3个月后的日期。

我建议使用一个名为Moment.js的库。

它经过了良好的测试,可以跨浏览器和服务器端工作(我在Angular和Node项目中都使用它)。它对区域日期有很好的支持。

http://momentjs.com/

var threeMonthsAgo = moment().subtract(3, 'months');

console.log(threeMonthsAgo.format()); // 2015-10-13T09:37:35+02:00

.format()返回ISO 8601格式的日期字符串表示形式。你也可以像这样使用自定义日期格式:format('dddd, MMMM Do YYYY, h:mm:ss a')