JavaScript计算日期从今天日期到7天前
我计算的是从今天起12天前的日期。但它没有返回正确的日期。 例如,对于今天的日期,即2013年11月11日(mm/dd/yyyy),它将返回2013年10月30日,而此时它应返回2013年10月31日 这是密码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
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...
如果您计划更频繁地使用日期和时间,我建议使用或 顺便问一下,为什么不使用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));