有没有一种简单的方法来获取olain JavaScript日期(例如今天)并返回X天?
例如,如果我想计算今天前5天的日期。
有没有一种简单的方法来获取olain JavaScript日期(例如今天)并返回X天?
例如,如果我想计算今天前5天的日期。
当前回答
var dateOffset = (24*60*60*1000) * 5; //5 days
var myDate = new Date();
myDate.setTime(myDate.getTime() - dateOffset);
如果您在整个web应用程序中执行大量令人头疼的日期操作,DateJS将使您的生活更加轻松:
http://simonwillison.net/2007/Dec/3/datejs/
其他回答
我为Date制作了这个原型,这样我就可以传递负值来减去天数,传递正值来添加天数。
if(!Date.prototype.adjustDate){
Date.prototype.adjustDate = function(days){
var date;
days = days || 0;
if(days === 0){
date = new Date( this.getTime() );
} else if(days > 0) {
date = new Date( this.getTime() );
date.setDate(date.getDate() + days);
} else {
date = new Date(
this.getFullYear(),
this.getMonth(),
this.getDate() - Math.abs(days),
this.getHours(),
this.getMinutes(),
this.getSeconds(),
this.getMilliseconds()
);
}
this.setTime(date.getTime());
return this;
};
}
因此,为了使用它,我可以简单地写下:
var date_subtract = new Date().adjustDate(-4),
date_add = new Date().adjustDate(4);
var d=新日期();document.write('今天是:'+d.toLocaleString());d.setDate(d.getDate()-31);document.write('<br>5天前是:'+d.toLocaleString());
请参见以下代码,从当前日期减去天数。此外,根据减去的日期设置月份。
var today = new Date();
var substract_no_of_days = 25;
today.setTime(today.getTime() - substract_no_of_days* 24 * 60 * 60 * 1000);
var substracted_date = (today.getMonth()+1) + "/" +today.getDate() + "/" + today.getFullYear();
alert(substracted_date);
我发现getDate()/setDate()方法的一个问题是,它太容易将所有内容转换为毫秒,而且语法有时我很难理解。
相反,我喜欢处理1天=86400000毫秒的事实。
因此,对于您的特定问题:
today = new Date()
days = 86400000 //number of milliseconds in a day
fiveDaysAgo = new Date(today - (5*days))
就像一个魅力。
我一直使用这种方法进行30/60/365天的滚动计算。
您可以很容易地推断出这一点,以创建月、年等的时间单位。
使用现代JavaScript函数语法
const getDaysPastDate=(daysBefore,date=new date)=>新日期(date-(1000*60*60*24*daysBefore));console.log(getDaysPastDate(1));//昨天