function addDays(n){
var t = new Date();
t.setDate(t.getDate() + n);
var month = "0"+(t.getMonth()+1);
var date = "0"+t.getDate();
month = month.slice(-2);
date = date.slice(-2);
var date = date +"/"+month +"/"+t.getFullYear();
alert(date);
}
addDays(5);
69
老我知道,但有时我喜欢这个:
function addDays(days) {
return new Date(Date.now() + 864e5 * days);
}
2
最简单的解决方案 .
Date.prototype.addDays = function(days) {
this.setDate(this.getDate() + parseInt(days));
return this;
};
// and then call
var newDate = new Date().addDays(2); //+2 days
console.log(newDate);
// or
var newDate1 = new Date().addDays(-2); //-2 days
console.log(newDate1);
7
我提出的解决方案在夏令时方面存在问题 .
通过使用 getUTCDate / setUTCDate ,我解决了我的问题 .
// Curried, so that I can create helper functions like `add1Day`
const addDays = num => date => {
// Make a working copy so we don't mutate the supplied date.
const d = new Date(date);
d.setUTCDate(d.getUTCDate() + num);
return d;
}
1
试试这个
function addDays(date,days) {
var one_day=1000*60*60*24;
return new Date(date.getTime()+(days*one_day)).toLocaleDateString();
}
6
您可以创建一个: -
Date.prototype.addDays = function(days) {
var date = new Date(this.valueOf());
date.setDate(date.getDate() + days);
return date;
}
var date = new Date();
alert(date.addDays(5));
如有必要,这会自动增加月份 . 例如:
8/31 1天将成为 9/1 .
直接使用 setDate 的问题在于它是一个变异器,最好避免这种情况 . ECMA认为将 Date 视为可变类而不是不可变结构 .
3
感谢Jason的回答,按预期工作,这里是您的代码和AnthonyWJones的便捷格式的混合:
Date.prototype.addDays = function(days){
var ms = new Date().getTime() + (86400000 * days);
var added = new Date(ms);
return added;
}
var someDate = new Date();
var expirationDate = someDate.addDays(10);
var previous = someDate.addDays(-5);
Date.prototype.addDays = function (num) {
var value = this.valueOf();
value += 86400000 * num;
return new Date(value);
}
Date.prototype.addSeconds = function (num) {
var value = this.valueOf();
value += 1000 * num;
return new Date(value);
}
Date.prototype.addMinutes = function (num) {
var value = this.valueOf();
value += 60000 * num;
return new Date(value);
}
Date.prototype.addHours = function (num) {
var value = this.valueOf();
value += 3600000 * num;
return new Date(value);
}
Date.prototype.addMonths = function (num) {
var value = new Date(this.valueOf());
var mo = this.getMonth();
var yr = this.getYear();
mo = (mo + num) % 12;
if (0 > mo) {
yr += (this.getMonth() + num - mo - 12) / 12;
mo += 12;
}
else
yr += ((this.getMonth() + num - mo) / 12);
value.setMonth(mo);
value.setYear(yr);
return value;
}
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. Add 20 days
// 3. Format it
// 4. Output it
// ---------------------------------------------------------------------
document.body.innerHTML = DateHelper.format(DateHelper.addDays(new Date(), 20));
var days = 2;
var newDate = new Date(Date.now() + days * 24*60*60*1000);
document.write('Today: <em>');
document.write(new Date());
document.write('</em> New: <strong>');
document.write(newDate);
//the_day is 2013-12-31
var the_day = Date.UTC(2013, 11, 31);
// Now, the_day will be "1388448000000" in UTC+8;
var the_next_day = new Date(the_day + 24 * 60 * 60 * 1000);
// Now, the_next_day will be "Wed Jan 01 2014 08:00:00 GMT+0800"
4
你可以使用JavaScript,不需要jQuery:
var someDate = new Date();
var numberOfDaysToAdd = 6;
someDate.setDate(someDate.getDate() + numberOfDaysToAdd);
Formatting to dd/mm/yyyy :
var dd = someDate.getDate();
var mm = someDate.getMonth() + 1;
var y = someDate.getFullYear();
var someFormattedDate = dd + '/'+ mm + '/'+ y;
598
var today = new Date();
var tomorrow = new Date();
tomorrow.setDate(today.getDate()+1);
var msInDay = 86400000;
var daysToAdd = 5;
var now = new Date();
var milliseconds = now.getTime();
var newMillisecods = milliseconds + msInDay * daysToAdd;
var newDate = new Date(newMillisecods);
//or now.setTime(newMillisecods);
function plusToDate(currentDate, unit, howMuch) {
var config = {
second: 1000, // 1000 miliseconds
minute: 60000,
hour: 3600000,
day: 86400000,
week: 604800000,
month: 2592000000, // Assuming 30 days in a month
year: 31536000000 // Assuming 365 days in year
};
var now = new Date(currentDate);
return new Date(now + config[unit] * howMuch);
}
var today = new Date();
var theDayAfterTommorow = plusToDate(today, 'day', 2);
顺便说一下,这是一个通用的解决方案,可以随时添加几秒或几分钟或几天 .
15
非常简单的代码,可以在java脚本中添加日期 .
var d = new Date();
d.setDate(d.getDate() + prompt('how many days you want to add write here'));
alert(d);
30 回答
我使用类似的东西:
适用于节省日期的时间:
适用于新的一年:
它可以参数化:
尝试
使用setDate()添加日期不会解决您的问题,尝试添加一些日期到2月份,如果您尝试添加新的日期,它不会导致您的预期 .
老我知道,但有时我喜欢这个:
最简单的解决方案 .
我提出的解决方案在夏令时方面存在问题 .
通过使用
getUTCDate
/setUTCDate
,我解决了我的问题 .试试这个
您可以创建一个: -
如有必要,这会自动增加月份 . 例如:
8/31 1天将成为 9/1 .
直接使用
setDate
的问题在于它是一个变异器,最好避免这种情况 . ECMA认为将Date
视为可变类而不是不可变结构 .感谢Jason的回答,按预期工作,这里是您的代码和AnthonyWJones的便捷格式的混合:
不,javascript没有内置函数,但您可以使用简单的代码行
这些答案让我感到困惑,我更喜欢:
getTime()给出了自1970年以来的毫秒数,86400000是一天中的毫秒数 . 因此,ms包含所需日期的毫秒数 .
使用毫秒构造函数提供所需的日期对象 .
只是花了很多年的时间试图弄清楚当年的交易是什么,而不是在遵循下面的主要示例时添加 .
如果你只是想在你拥有的日期添加n天,你最好去:
或者是longwinded版本
这个今天/明天的事情令人困惑 . 通过将当前日期设置为新的日期变量,您将弄乱年份值 . 如果你从原来的日期工作,你就不会 .
我昨晚创建了这些扩展:
你可以传递正面或负面 Value ;
例:
对于那些使用Angular的人:
做就是了:
如果可以,请使用moment.js . JavaScript没有_152148的语法:
参考:http://momentjs.com/docs/#/manipulating/add/
晚会,但如果你使用jQuery,那么有一个很棒的插件叫做Moment:
http://momentjs.com/
http://momentjs.com/docs/#/manipulating/
还有很多其他好东西!
编辑:感谢aikeru的评论删除了jQuery参考
有一个setDate和一个getDate方法,允许你做这样的事情:
如果您想要以人类可读的格式减去天数并格式化日期,则应考虑创建一个如下所示的自定义
DateHelper
对象:(另见this Fiddle)
CodePen
我们的团队认为date-fns是这个领域最好的图书馆 . 它将日期视为 immutable (Moment.js will probably never adopt immutability),它更快,并且可以模块化加载 .
我想我也会给出答案:
就个人而言,我喜欢尝试避免无偿的变量声明,方法调用和构造函数调用,因为它们在性能上都很昂贵 . (理所当然地)
我打算在@AnthonyWJones给出的答案下留下这个评论,但是考虑得更好 .
以上将尊重夏令时 . 这意味着如果您添加跨越DST的天数,则显示的时间(小时)将更改以反映该情况 .
例:
2014年11月2日02:00是DST的结束 .
如果您希望保留DST的时间(所以10:30仍然是10:30)...
那么,现在你有......
Edit: 而不是
setTime()
(或setHours()
)你可以这样做:Old:
而不是使用
setTime()
,您可以使用setHours()
:见the JSFiddle ......
我的简单解决方案是:
这个解决方案没有夏令时的问题 . 此外,可以添加/分配任何年,月,日等的偏移量 .
是正确的代码 .
你可以使用JavaScript,不需要jQuery:
要小心,因为这可能很棘手 . 设置“明天”时,它只能起作用,因为它的当前值与“今天”的年份和月份相匹配 . 但是,设置为“32”之类的日期数字通常仍可正常工作,以便将其移至下个月 .
setDate()的mozilla文档并不表示它将处理月末场景 . 见https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date
设置日期()
这就是我需要添加天数时使用setTime()的原因 .
我使用以下内容解 .
Date有一个接受int的构造函数 . 此参数表示1970年1月1日之前/之后的总毫秒数 . 它还有一个方法setTime,它在不创建新Date对象的情况下执行相同操作 .
我们在这里做的是将天数转换为毫秒,并将此值添加到getTime提供的值 . 最后,我们将结果赋予Date(毫秒)构造函数或setTime(毫秒)方法 .
Correct Answer :
Incorrect Answer :
这个答案有时会提供正确的结果,但往往会返回错误的年份和月份 . 此答案唯一有效的时间是您添加天数的日期恰好具有当前年份和月份 .
Proof / Example
Check this JsFiddle
您可以在此处创建自定义帮助程序功能
顺便说一下,这是一个通用的解决方案,可以随时添加几秒或几分钟或几天 .
非常简单的代码,可以在java脚本中添加日期 .