将天添加到JavaScript日期
如何使用JavaScript向当前日期添加天数。JavaScript是否有像.Net的将天添加到JavaScript日期,javascript,date,datetime,time,Javascript,Date,Datetime,Time,如何使用JavaScript向当前日期添加天数。JavaScript是否有像.Net的AddDay这样的内置函数 var today = new Date(); var tomorrow = new Date(); tomorrow.setDate(today.getDate()+1); 小心点,因为这可能很棘手。设置“明天”时,它只起作用,因为它的当前值与“今天”的年份和月份匹配。但是,设置为“32”这样的日期数字通常仍然可以正常工作,以便将其移动到下一个月。您可以使用以下方法创建一个日期数
AddDay
这样的内置函数
var today = new Date();
var tomorrow = new Date();
tomorrow.setDate(today.getDate()+1);
小心点,因为这可能很棘手。设置“明天”时,它只起作用,因为它的当前值与“今天”的年份和月份匹配。但是,设置为“32”这样的日期数字通常仍然可以正常工作,以便将其移动到下一个月。您可以使用以下方法创建一个日期数字:-
Date.prototype.addDays=函数(天){
var date=新日期(this.valueOf());
date.setDate(date.getDate()+天);
返回日期;
}
变量日期=新日期();
控制台日志(日期添加天数(5))代码>这些答案让我感到困惑,我更喜欢:
var ms = new Date().getTime() + 86400000;
var tomorrow = new Date(ms);
getTime()给出了自1970年以来的毫秒数,86400000是一天中的毫秒数。
因此,ms包含所需日期的毫秒数
使用毫秒构造函数可以得到所需的日期对象。试试看
var someDate = new Date();
var duration = 2; //In Days
someDate.setTime(someDate.getTime() + (duration * 24 * 60 * 60 * 1000));
使用setDate()添加日期并不能解决您的问题,请尝试在2月份添加几天,如果您尝试在2月份添加新的日期,则不会产生您所期望的结果。感谢Jason提供了您的答案,该答案如预期般有效,下面是您的代码和AnthonyWJones的便捷格式的混合:
Date.prototype.addDays = function(days){
var ms = new Date().getTime() + (86400000 * days);
var added = new Date(ms);
return added;
}
setDate()的mozilla文档没有表明它将处理月末场景。
看
设置日期()
- 根据本地时间设置指定日期的月份日期(1-31)
这就是为什么我在需要添加天数时使用setTime()。我的简单解决方案是:
nextday=new Date(oldDate.getFullYear(),oldDate.getMonth(),oldDate.getDate()+1);
此解决方案不存在夏令时问题。此外,还可以添加/细分年、月、日等的任何抵销
day=new Date(oldDate.getFullYear()-2,oldDate.getMonth()+22,oldDate.getDate()+61);
是正确的代码。只是花了很长时间试图弄清楚这一年的交易是什么,但在下面的主要示例中没有添加
如果您只想在现有日期的基础上再增加n天,那么最好是:
myDate.setDate(myDate.getDate()+n)
还是长篇大论的版本
var theDate = new Date(2013, 11, 15);
var myNewDate = new Date(theDate);
myNewDate.setDate(myNewDate.getDate() + 30);
console.log(myNewDate);
今天/明天的事情令人困惑。通过将当前日期设置为新的日期变量,您将弄乱年份值。如果您从最初的日期开始工作,则不会。我昨晚创建了这些扩展:
您可以传递正值或负值
例如:
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;
}
正确答案:
function addDays(date, days) {
var result = new Date(date);
result.setDate(result.getDate() + days);
return result;
}
回答不正确:
function addDays(date, days) {
var result = new Date(date);
result.setDate(result.getDate() + days);
return result;
}
这个答案有时提供正确的结果,但经常返回错误的年份和月份。这个答案唯一有效的时间是当您要添加天数的日期恰好是当前的年份和月份时
// Don't do it this way!
function addDaysWRONG(date, days) {
var result = new Date();
result.setDate(date.getDate() + days);
return result;
}
证明/示例
//正确
函数addDays(日期,天){
var结果=新日期(日期);
result.setDate(result.getDate()+天);
返回结果;
}
//坏年/坏月
函数addDaysWing(日期,天){
var结果=新日期();
result.setDate(date.getDate()+天);
返回结果;
}
//DST期间发生错误
函数addDaysDSTFILE(日期,天){
var dayms=(天*24*60*60*1000);
返回新日期(Date.getTime()+dayms);
}
//试验
函数格式日期(日期){
return(date.getMonth()+1)+'/'+date.getDate()+'/'+date.getFullYear();
}
$('tbody tr td:first child')。每个(函数(){
var$in=$(本);
var$out=$('').insertAfter$in.addClass(“答案”);
var$OUTPAIL=$('')。在($out)之后插入;
var$outDstFail=$('').insertAfter($outFail);
变量日期=新日期($in.text());
var correctDate=格式日期(addDays(日期,1));
var failDate=格式日期(addDaysWRONG(日期,1));
var failDstDate=formatDate(addDaysDstFail(日期,1));
$out.text(更正日期);
$outFail.text(失效日期);
$outDstFail.text(failDstDate);
$outail.addClass(correctDate==failDate?“对”:“错”);
$outDstFail.addClass(correctDate==failDstDate?“对”:“错”);
});代码>
正文{
字体大小:14px;
}
桌子{
边界塌陷:塌陷;
}
表,td,th{
边框:1px纯黑;
}
运输署{
填充:2px;
}
.错了{
颜色:红色;
}
.对{
颜色:绿色;
}
.答复{
字体大小:粗体;
}
DST日期
输入
+一天
+1天失败
+1天DST失败
03/10/2013
11/03/2013
03/09/2014
11/02/2014
03/08/2015
11/01/2015
2013
输入
+一天
+1天失败
+1天DST失败
01/01/2013
02/01/2013
03/01/2013
04/01/2013
05/01/2013
06/01/2013
07/01/2013
08/01/2013
09/01/2013
10/01/2013
11/01/2013
12/01/2013
2014
输入
+一天
+1天失败
+1天DST失败
01/01/2014
02/01/2014
03/01/2014
04/01/2014
05/01/2014
06/01/2014
07/01/2014
08/01/2014
09/01/2014
10/01/2014
11/01/2014
12/01/2014
2015
输入
+一天
+1天失败
+1天DST失败
01/01/2015
02/01/2015
03/01/2015
04/01/2015
05/01/2015
06/01/2015
07/01/2015
08/01/2015
09/01/2015
10/01/2015
11/01/2015
12/01/2015
如果可以,请使用。JavaScript没有很好的本机日期/时间方法。以下是力矩的语法示例:
var nextWeek=moment().add(7,“天”);
警报(nextWeek)代码>
我使用的是:
new Date(dateObject.getTime() + amountOfDays * 24 * 60 * 60 * 1000)
工作日节省时间:
new Date(new Date(2014, 2, 29, 20, 0, 0).getTime() + 1 * 24 * 60 * 60 * 1000)
与新年一起工作:
new Date(new Date(2014, 11, 31, 20, 0, 0).getTime() + 1 * 24 * 60 * 60 * 1000)
它可以参数化:
function DateAdd(source, amount, step) {
var factor = 1;
if (step == "day") factor = 24 * 60 * 60 * 1000;
else if (step == "hour") factor = 60 * 60 * 1000;
...
new Date(source.getTime() + amount * factor);
}
迟到了,但是如果你使用jQuery
,那么有一个很好的插件
// Prototype usage...
Date.prototype.addDays = Date.prototype.addDays || function( days ) {
return this.setTime( 864E5 * days + this.valueOf() ) && this;
};
// Namespace usage...
namespace.addDaysToDate = function( date, days ) {
return date.setTime( 864E5 * days + date.valueOf() ) && date;
};
// Basic Function declaration...
function addDaysToDate( date, days ) {
return date.setTime( 864E5 * days + date.valueOf() ) && date;
};
var dt = new Date( 2014, 10, 1, 10, 30, 0 );
console.log( dt ); // Sat Nov 01 2014 10:30:00
console.log( dt.addDays( 10 ) ); // Tue Nov 11 2014 09:30:00
// Prototype usage...
Date.prototype.addDays = Date.prototype.addDays || function( days ) {
return this.setDate( this.getDate() + days ) && this;
};
// Namespace usage...
namespace.addDaysToDate = function( date, days ) {
return date.setDate( date.getDate() + days ) && date;
};
// Basic Function declaration...
function addDaysToDate( date, days ) {
return date.setDate( date.getDate() + days ) && date;
};
var dt = new Date( 2014, 10, 1, 10, 30, 0 );
console.log( dt ); // Sat Nov 01 2014 10:30:00
console.log( dt.addDays( 10 ) ); // Tue Nov 11 2014 10:30:00
function addDays(days) {
return new Date(Date.now() + 864e5 * days);
}
int days = 1;
var newDate = new Date(Date.now() + days * 24*60*60*1000);
timeObject.setDate(timeObject.getDate() + countOfDays);
// 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;
}
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;
Date.prototype.addDays = function (days) {
return new Date(this.valueOf() + days * 864e5);
}
let d=new Date(new Date().getTime() + (7 * 24 * 60 * 60 * 1000));
new Date(+yourDate - 30 *86400000)
new Date((new Date()).getTime() + (60*60*24*1000));
calc_date = new Date(Date.now() +(days_to_add * 86400000));
const days = 15;
// Date.now() gives the epoch date value (in milliseconds) of current date
nextDate = new Date( Date.now() + days * 24 * 60 * 60 * 1000)
// To add Days
var d = new Date();
d.setDate(d.getDate() + 5);
// To add Months
var m = new Date();
m.setMonth(m.getMonth() + 5);
// To add Years
var m = new Date();
m.setFullYear(m.getFullYear() + 5);
var currentDate = new Date();
var numberOfDayToAdd = 1;
currentDate.setDate(currentDate.getDate() + numberOfDayToAdd );