有谁知道约会(例如今天)和回溯X天的简单方法吗?
因此,例如,如果我想计算今天之前5天的日期。
有谁知道约会(例如今天)和回溯X天的简单方法吗?
因此,例如,如果我想计算今天之前5天的日期。
Answers:
尝试这样的事情:
var d = new Date();
d.setDate(d.getDate()-5);
请注意,这将修改日期对象并返回更新日期的时间值。
var d = new Date();
document.write('Today is: ' + d.toLocaleString());
d.setDate(d.getDate() - 5);
document.write('<br>5 days ago was: ' + d.toLocaleString());
new Date(new Date().setDate(new Date().getDate()-5))
-将在5天前。在答案示例中,将其传递给新日期以获取日期对象。所以,new Date(d)
是你想要的。
setDate(-1)
将设置日期为本月的最后一天
toString
方法,如toISOString
,toDateString
等
var dateOffset = (24*60*60*1000) * 5; //5 days
var myDate = new Date();
myDate.setTime(myDate.getTime() - dateOffset);
如果您要在整个Web应用程序中执行很多头痛检查日期操作,DateJS将使您的生活更加轻松:
getTime()
并且setTime()
是从纪元以来的毫秒数。时间是否跨过年份边界并不重要。
它是这样的:
var d = new Date(); // today!
var x = 5; // go back 5 days!
d.setDate(d.getDate() - x);
function getDaysAgo(b){var a=new Date;a.setDate(a.getDate()-b);return a};
然后var daysAgo45 = getDaysAgo(45);
我注意到getDays + X在日期/月份范围内不起作用。只要您的日期不早于1970,就可以使用getTime。
var todayDate = new Date(), weekDate = new Date();
weekDate.setTime(todayDate.getTime()-(7*24*3600000));
获取moment.js。所有很酷的孩子都在使用它。它具有更多的格式化选项,等等。
var n = 5;
var dateMnsFive = moment(<your date>).subtract(n , 'day');
可选的!转换为JS Date obj以进行角度绑定。
var date = new Date(dateMnsFive.toISOString());
可选的!格式
var date = dateMnsFive.format("YYYY-MM-DD");
我为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);
d.setDate(d.getDate() + days)
正数和负数都用于天数,以分别增加和减少天数。并且它应该在实例上工作(就像其他Date方法一样),而不是创建并返回副本。
一些现有的解决方案已经接近,但与我想要的不完全相同。此函数可使用正值或负值,并处理边界情况。
function addDays(date, days) {
return new Date(
date.getFullYear(),
date.getMonth(),
date.getDate() + days,
date.getHours(),
date.getMinutes(),
date.getSeconds(),
date.getMilliseconds()
);
}
我喜欢以毫秒为单位进行数学运算。所以用Date.now()
var newDate = Date.now() + -5*24*3600*1000; // date 5 days ago in milliseconds
如果你喜欢它格式化
new Date(newDate).toString(); // or .toUTCString or .toISOString ...
注意:Date.now()
在较旧的浏览器(例如我认为的IE8)中不起作用。Polyfill在这里。
@socketpair指出了我的草率。正如他/她所说:“由于时区规则,一年中的某天有23个小时,有25个小时。”
为了进一步说明这一点,如果您要计算夏令时更改的时区中的5天前的本地日,并且您选择了夏令时,则上面的答案会出现夏令时错误
Date.now()
为您提供了当前的本地时间,或者.toString()
,它返回本地日期,因此与Date.now()
UTC中的基准日期不兼容。 但是,如果您全部使用UTC进行数学运算,则可以使用它,例如
答:您想从现在(UTC)的UTC日期起5天前
var newDate = Date.now() + -5*24*3600*1000; // date 5 days ago in milliseconds UTC
new Date(newDate).toUTCString(); // or .toISOString(), BUT NOT toString
B.您使用UTC基准日期(不是“现在”)开始,使用 Date.UTC()
newDate = new Date(Date.UTC(2015, 3, 1)).getTime() + -5*24*3600000;
new Date(newDate).toUTCString(); // or .toISOString BUT NOT toString
将您的日期分割成几部分,然后返回带有调整后值的新日期
function DateAdd(date, type, amount){
var y = date.getFullYear(),
m = date.getMonth(),
d = date.getDate();
if(type === 'y'){
y += amount;
};
if(type === 'm'){
m += amount;
};
if(type === 'd'){
d += amount;
};
return new Date(y, m, d);
}
请记住,月是从零开始的,但天不是。例如,新日期(2009,1,1)== 2009年2月1日,新日期(2009,1,0)== 2009年1月31日;
无需使用第二个变量,您可以将x替换为x天:
let d=new Date(new Date().getTime() - (7 * 24 * 60 * 60 * 1000))
我创建了一个用于日期操作的函数。您可以添加或减去任何天数,小时数,分钟数。
function dateManipulation(date, days, hrs, mins, operator) {
date = new Date(date);
if (operator == "-") {
var durationInMs = (((24 * days) * 60) + (hrs * 60) + mins) * 60000;
var newDate = new Date(date.getTime() - durationInMs);
} else {
var durationInMs = (((24 * days) * 60) + (hrs * 60) + mins) * 60000;
var newDate = new Date(date.getTime() + durationInMs);
}
return newDate;
}
现在,通过传递参数来调用此函数。例如,这是一个函数调用,用于获取从今天起3天之前的日期。
var today = new Date();
var newDate = dateManipulation(today, 3, 0, 0, "-");
使用MomentJS。
function getXDaysBeforeDate(referenceDate, x) {
return moment(referenceDate).subtract(x , 'day').format('MMMM Do YYYY, h:mm:ss a');
}
var yourDate = new Date(); // let's say today
var valueOfX = 7; // let's say 7 days before
console.log(getXDaysBeforeDate(yourDate, valueOfX));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
最佳答案导致我的代码出现错误,该错误将在本月的第一天设置当前月份的将来日期。这是我所做的
curDate = new Date(); // Took current date as an example
prvDate = new Date(0); // Date set to epoch 0
prvDate.setUTCMilliseconds((curDate - (5 * 24 * 60 * 60 * 1000))); //Set epoch time
管理日期的一种简单方法是使用Moment.js
您可以使用add
。例
var startdate = "20.03.2014";
var new_date = moment(startdate, "DD.MM.YYYY");
new_date.add(5, 'days'); //Add 5 days to start date
alert(new_date);
我从date.js中获得了不错的成绩:
d = new Date();
d.add(-10).days(); // subtract 10 days
真好!
网站包含此美女:
Datejs不仅解析字符串,还将它们整洁地切成两部分
如果要减去天数并以易于DateHelper
理解的格式设置日期格式,则应考虑创建一个看起来像这样的自定义对象:
var DateHelper = {
addDays : function(aDate, numberOfDays) {
aDate.setDate(aDate.getDate() + numberOfDays); // Add numberOfDays
return aDate; // Return the date
},
format : function format(date) {
return [
("0" + date.getDate()).slice(-2), // Get day and pad it with zeroes
("0" + (date.getMonth()+1)).slice(-2), // Get month and pad it with zeroes
date.getFullYear() // Get full year
].join('/'); // Glue the pieces together
}
}
// With this helper, you can now just use one line of readable code to :
// ---------------------------------------------------------------------
// 1. Get the current date
// 2. Subtract 5 days
// 3. Format it
// 4. Output it
// ---------------------------------------------------------------------
document.body.innerHTML = DateHelper.format(DateHelper.addDays(new Date(), -5));
(另请参阅此小提琴)
请参见以下代码,从当前日期中减去天数。另外,根据扣除的日期设置月份。
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);
您可以使用Javascript。
var CurrDate = new Date(); // Current Date
var numberOfDays = 5;
var days = CurrDate.setDate(CurrDate.getDate() + numberOfDays);
alert(days); // It will print 5 days before today
对于PHP,
$date = date('Y-m-d', strtotime("-5 days")); // it shows 5 days before today.
echo $date;
希望对您有帮助。
我转换为毫秒并扣除了天,否则月份和年份将不会更改且合乎逻辑
var numberOfDays = 10;//number of days need to deducted or added
var date = "01-01-2018"// date need to change
var dt = new Date(parseInt(date.substring(6), 10), // Year
parseInt(date.substring(3,5), 10) - 1, // Month (0-11)
parseInt(date.substring(0,2), 10));
var new_dt = dt.setMilliseconds(dt.getMilliseconds() - numberOfDays*24*60*60*1000);
new_dt = new Date(new_dt);
var changed_date = new_dt.getDate()+"-"+(new_dt.getMonth()+1)+"-"+new_dt.getFullYear();
希望有所帮助
var date = new Date();
var day = date.getDate();
var mnth = date.getMonth() + 1;
var fDate = day + '/' + mnth + '/' + date.getFullYear();
document.write('Today is: ' + fDate);
var subDate = date.setDate(date.getDate() - 1);
var todate = new Date(subDate);
var today = todate.getDate();
var tomnth = todate.getMonth() + 1;
var endDate = today + '/' + tomnth + '/' + todate.getFullYear();
document.write('<br>1 days ago was: ' + endDate );
试试这个
dateLimit = (curDate, limit) => {
offset = curDate.getDate() + limit
return new Date( curDate.setDate( offset) )
}
currDate可以是任何日期
限制可以是天数之差(对未来为正,对过去为负)
这将为您提供最后10天的结果110%正常工作,您将不会遇到任何类型的问题
var date = new Date();
var day=date.getDate();
var month=date.getMonth() + 1;
var year=date.getFullYear();
var startDate=day+"/"+month+"/"+year;
var dayBeforeNineDays=moment().subtract(10, 'days').format('DD/MM/YYYY');
startDate=dayBeforeNineDays;
var endDate=day+"/"+month+"/"+year;
您可以根据需要更改减日期