JavaScript计算日期从今天日期到7天前

JavaScript计算日期从今天日期到7天前,javascript,date,Javascript,Date,我计算的是从今天起12天前的日期。但它没有返回正确的日期。 例如,对于今天的日期,即2013年11月11日(mm/dd/yyyy),它将返回2013年10月30日,而此时它应返回2013年10月31日 这是密码 var d = new Date(); d.setDate(d.getDate() - 12); d.setMonth(d.getMonth() + 1 - 0); var curr_date = d.getDate(); var curr_month = d.getMonth(); v

我计算的是从今天起12天前的日期。但它没有返回正确的日期。 例如,对于今天的日期,即2013年11月11日(mm/dd/yyyy),它将返回2013年10月30日,而此时它应返回2013年10月31日

这是密码

var d = new Date();
d.setDate(d.getDate() - 12);
d.setMonth(d.getMonth() + 1 - 0);
var curr_date = d.getDate();
var curr_month = d.getMonth();
var curr_year = d.getFullYear();
if (curr_month < 10 && curr_date < 10) {
    var parsedDate = "0" + curr_month + "/" + "0" + curr_date + "/" + curr_year;
    alert(parsedDate);
} else if (curr_month < 10 && curr_date > 9) {
    var parsedDate = "0" + curr_month + "/" + curr_date + "/" + curr_year;
    alert(parsedDate);
} else if (curr_month > 9 && curr_date < 10) {
    var parsedDate = curr_month + "/" + "0" + curr_date + "/" + curr_year;
    alert(parsedDate);
} else {
    var parsedDate = curr_month + "/" + curr_date + "/" + curr_year;
    alert(parsedDate);
}
var d=新日期();
d、 setDate(d.getDate()-12);
d、 setMonth(d.getMonth()+1-0);
var curr_date=d.getDate();
var curr_month=d.getMonth();
var curr_year=d.getFullYear();
如果(当前月<10和当前日期<10){
var parsedDate=“0”+当前月份+“/”+“0”+当前日期+“/”+当前年份;
警报(解析数据);
}否则如果(当前月份<10和当前日期>9){
var parsedDate=“0”+当前月份+“/”+当前日期+“/”+当前年份;
警报(解析数据);
}否则如果(当前月份>9和当前日期<10){
var parsedDate=当前月份+“/”+“0”+当前日期+“/”+当前年份;
警报(解析数据);
}否则{
var parsedDate=当前月份+“/”+当前日期+“/”+当前年份;
警报(解析数据);
}

尝试减去天数很棘手。最好从时间戳中减去并更改日期

要减去12天,请执行以下操作:

   var d = new Date();
   var ts = d.getTime();
   var twelveDays = ts - (12 * 24 * 60 * 60 * 1000);
   d.setUTCDate(twelveDays);
问题解决了

var days; // Days you want to subtract
var date = new Date();
var last = new Date(date.getTime() - (days * 24 * 60 * 60 * 1000));
var day =last.getDate();
var month=last.getMonth()+1;
var year=last.getFullYear();

您可以使用以下代码获取从今天日期到7天前的日期

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

var finalDate = date.getDate()+'/'+ (date.getMonth()+1) +'/'+date.getFullYear();

下面是一个函数,它根据以下内容返回过去或将来的日期

If plusMinus = -1 then Past Date
If plusMinus = 1 then Future Date

function getDate(inDays, plusMinus) {
    const today = new Date(); 
    return new Date(today.getFullYear(),
                    today.getMonth(),
                    today.getDate() + (inDays * plusMinus));
}

纯js单线解决方案:

new Date(Date.now() - 7 * 24 * 60 * 60 * 1000)  // Tue Feb 04 2020 13:50:37 GMT...
  • new Date()-根据计算的毫秒时间创建日期对象
  • Date.now()-以毫秒为单位给出1970年后的时间
  • 7(天)*24(小时)*60(分钟)*60(秒)*1000 (毫秒)=604800000或7天(毫秒)
  • 如果您不打算更改减记值,或者为了方便更改减记的天数、分钟数等,可以使用计算值


    如果您计划更频繁地使用日期和时间,我建议使用或

    顺便问一下,为什么不使用moment.js?矩.js被认为是维护模式下的遗留项目。它并没有死,但它确实已经完成了。请参见更新的:)


    使用dayjs库,我们可以做得更简单

    import dayjs from 'dayjs';
    
    const getDate = (prevDays) => {
        const now = dayjs();
        console.log(now.subtract(prevDays, 'day').format('mm-dd-yyyy'));
        return now.subtract(prevDays, 'day').toDate();
    }
    

    这是最好的解决办法。。当X是你的一天:

    var dates = [];
    for (let i = 0; i < X; i++) {
      var date = new Date();
    
      var thatDay = date.getDate() - i; //Current Date
      date.setDate(thatDay);
      let day = date.getDate();
      let month = date.getMonth() + 1;
      let year = date
        .getFullYear()
        .toString()
        .substr(-2);
    
      dates.push(month + '/' + day + '/' + year); //format it as you need
    }
    //output mm/d/yy
    
    var日期=[];
    for(设i=0;i
    要获取过去作为数组的天数,请使用此代码

    查看控制台以了解结果

    const GetDays=(d,今天提及=false)=>{
    //提到今天意味着阵列将有今天的日期
    var DateArray=[];
    var天数=d;
    对于(var i=0;i
    
    Date.prototype.addDays=函数(天){
    //将天添加到给定日期
    var date=新日期(this.valueOf());
    date.setDate(date.getDate()+天);
    返回日期;
    }
    let today=新日期()
    
    console.log(today.addDays(-7))
    首先:获取当前日期

     const startingDate = new Date();
    
    第二:得到你想要的日期 !!:如果您使用setDate直接更改startingDate,它将更改此变量

    const sevenDaysBeforeDate = new Date(new Date().setDate(new Date().getDate() - 7));
    
    7天后

    const endDate = new Date(new Date().setDate(new Date().getDate() + 7));
    

    一句话:检查你的数学,12天前是10月30日。这不是你问题的一部分,但为什么你要在
    d.setMonth(d.getMonth()+1-0);
    12天前是10月30日31@ozil我明白了,但是你在减去0,这是没有意义的。它是相同的值。为什么不直接做
    d.setMonth(d.getMonth()+1);
    我在var ts=d.UTC()上出错;我使用的是java脚本1.9.2错误的方法。应该是getTime()。这是错误的,因为它将使用非法的
    day
    参数值(范围[1..31]),并且在几个月甚至少于31的时间内,
    ms
    的技巧是唯一有效的(ozil)感谢您的反馈@rioV8如果我正确理解了您的担忧,那么我想指出那个月,日期本身是由日期对象确定的,比如今天。getMonth()将遵循范围[0-11],因为它是从今天开始的,这是一个日期对象。如果我错了,请纠正我。是的,但如果
    getDate()
    返回1,减去5天,然后将new day参数设置为
    -4
    ,这是不允许的,并且会导致不确定的行为,并且依赖于实现。我认为这不正确。如果在控制台中运行低于代码的代码,它将返回正确的值;
    新日期(today.getFullYear(),today.getMonth(),today.getDate())
    date.getMonth()
    返回月份值减去实际月份值的1,我是唯一一个感觉违反直觉的人吗?
     const startingDate = new Date();
    
    const sevenDaysBeforeDate = new Date(new Date().setDate(new Date().getDate() - 7));
    
    const endDate = new Date(new Date().setDate(new Date().getDate() + 7));