Answers:
为您提供三种选择:
Date
对象(不使用库):我以前对#1的回答是错误的(它增加了24小时,没有考虑到夏时制的转换;Clever Human指出,东部时区到2010年11月7日将失败)。相反,Jigar的答案是在没有库的情况下执行此操作的正确方法:
var tomorrow = new Date();
tomorrow.setDate(tomorrow.getDate() + 1);
这甚至在一个月(或一年)的最后一天都可以使用,因为JavaScript日期对象对过渡很聪明:
(此答案当前已被接受,因此无法删除。在被接受之前,我向OP建议他们接受Jigar的答案,但也许他们在清单上的#2或#3接受了这个答案。)
var today = moment();
var tomorrow = moment(today).add(1, 'days');
(请注意,add
修改后会修改您调用的实例,而不是返回新实例,所以today.add(1, 'days')
modify会这样做today
。这就是我们从克隆op on开始的原因var tomorrow = ...
。)
var today = new Date(); // Or Date.today()
var tomorrow = today.add(1).day();
Date
构造函数(new Date(year, month, date)
);参见规范的 15.9.2.1节; 如果您想接受多种格式,一定要看一下DateJS。
Date.parse
(其返回的毫秒数,然后您可以输入new Date(ms)
)。但是请注意,这可能因浏览器而异。直到最近,实现几乎可以完成他们想做的任何事情Date.parse
。现在,新的第5版规范具有必须接受的最小格式,但是我还没有想到。
x = new Date(); x2 = new Date(x.getTime() + 1000)
,其中1000是毫秒增量。
Date
对象是可变的。您将同一 Date
对象存储在数组中三次。如果需要三个不同的Date
对象,则必须创建三个对象:var unavailableDates = []; for (var d = new Date('2017-05-11'); d < new Date('2017-05-13'); d.setDate(d.getDate() + 1)) { unavailableDates.push(new Date(+d)); }
var myDate = new Date();
//add a day to the date
myDate.setDate(myDate.getDate() + 1);
new Date("2009-09-11")
但Firefox不接受。我认为大多数浏览器都接受new Date("2009/09/11")
这样一个简单的解决方案var arrivalDate = document.getElementById('arival_date').value; var dayAfter = new Date(arrival_date.replace(/-/g, '/')); dayAfter.setDate(dayAfter.getDate()+1);
。
-
与/
和希望,浏览器会接受它,将是划分串入部分:var dateParts = arrivalDate.split('-'); var y = parseInt(dateParts[0], 10); var m = parseInt(dateParts[1], 10); var d = parseInt(dateParts[2], 10); var dayAfter = new Date(y, m-1, d+1);
请注意,我们使用的是m-1
在这里,因为JavaScript月份是枚举值(因为1月份是0,没有1),以及d+1
因为我们正在执行初始分配中的递增操作(它将在2月29日自动更正,
此答案中的所有示例似乎都不适用于夏令时调整日。在那几天,一天中的小时数不是24(而是23或25,具体取决于您是“向前冲”还是“向后退”。)
以下AddDays javascript函数说明了夏时制:
function addDays(date, amount) {
var tzOff = date.getTimezoneOffset() * 60 * 1000,
t = date.getTime(),
d = new Date(),
tzOff2;
t += (1000 * 60 * 60 * 24) * amount;
d.setTime(t);
tzOff2 = d.getTimezoneOffset() * 60 * 1000;
if (tzOff != tzOff2) {
var diff = tzOff2 - tzOff;
t += diff;
d.setTime(t);
}
return d;
}
这是我用来测试功能的测试:
var d = new Date(2010,10,7);
var d2 = AddDays(d, 1);
document.write(d.toString() + "<br />" + d2.toString());
d = new Date(2010,10,8);
d2 = AddDays(d, -1)
document.write("<hr /><br />" + d.toString() + "<br />" + d2.toString());
d = new Date('Sun Mar 27 2011 01:59:00 GMT+0100 (CET)');
d2 = AddDays(d, 1)
document.write("<hr /><br />" + d.toString() + "<br />" + d2.toString());
d = new Date('Sun Mar 28 2011 01:59:00 GMT+0100 (CET)');
d2 = AddDays(d, -1)
document.write("<hr /><br />" + d.toString() + "<br />" + d2.toString());
最简单的方法是转换为毫秒并添加1000 * 60 * 60 * 24毫秒,例如:
var tomorrow = new Date(today.getTime()+1000*60*60*24);
1000*60*60*24
xDaysToBeAdded
new Date(+new Date() + 1000*60*60*24)
但实际上实际上类似于getTime()
/ setTime()
。
new Date(Date.now()+1000*60*60*24);
在遵循其他人的建议之前,您首先需要解析您的字符串:
var dateString = "2010-09-11";
var myDate = new Date(dateString);
//add a day to the date
myDate.setDate(myDate.getDate() + 1);
如果您希望再次以相同的格式返回,则必须“手动”执行此操作:
var y = myDate.getFullYear(),
m = myDate.getMonth() + 1, // january is month 0 in javascript
d = myDate.getDate();
var pad = function(val) { var str = val.toString(); return (str.length < 2) ? "0" + str : str};
dateString = [y, pad(m), pad(d)].join("-");
但我建议像其他答复中所述获得Date.js,这对您有很大帮助。
接下来的5天:
var date = new Date(),
d = date.getDate(),
m = date.getMonth(),
y = date.getFullYear();
for(i=0; i < 5; i++){
var curdate = new Date(y, m, d+i)
console.log(curdate)
}
使用dateObj.toJSON()方法获取日期的字符串值参考:https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toJSON 从返回的结果中切片日期值,然后增加所需的天数。
var currentdate = new Date();
currentdate.setDate(currentdate.getDate() + 1);
var tomorrow = currentdate.toJSON().slice(0,10);
Date.prototype.AddDays = function (days) {
days = parseInt(days, 10);
return new Date(this.valueOf() + 1000 * 60 * 60 * 24 * days);
}
例
var dt = new Date();
console.log(dt.AddDays(-30));
console.log(dt.AddDays(-10));
console.log(dt.AddDays(-1));
console.log(dt.AddDays(0));
console.log(dt.AddDays(1));
console.log(dt.AddDays(10));
console.log(dt.AddDays(30));
结果
2017-09-03T15:01:37.213Z
2017-09-23T15:01:37.213Z
2017-10-02T15:01:37.213Z
2017-10-03T15:01:37.213Z
2017-10-04T15:01:37.213Z
2017-10-13T15:01:37.213Z
2017-11-02T15:01:37.213Z
不能完全确定它是否为BUG(已测试Firefox 32.0.3和Chrome 38.0.2125.101),但是以下代码在巴西(-3 GMT)上将失败:
Date.prototype.shiftDays = function(days){
days = parseInt(days, 10);
this.setDate(this.getDate() + days);
return this;
}
$date = new Date(2014, 9, 16,0,1,1);
$date.shiftDays(1);
console.log($date+"");
$date.shiftDays(1);
console.log($date+"");
$date.shiftDays(1);
console.log($date+"");
$date.shiftDays(1);
console.log($date+"");
结果:
Fri Oct 17 2014 00:01:01 GMT-0300
Sat Oct 18 2014 00:01:01 GMT-0300
Sat Oct 18 2014 23:01:01 GMT-0300
Sun Oct 19 2014 23:01:01 GMT-0200
在日期上增加一个小时,将使其工作完美(但不能解决问题)。
$date = new Date(2014, 9, 16,0,1,1);
结果:
Fri Oct 17 2014 01:01:01 GMT-0300
Sat Oct 18 2014 01:01:01 GMT-0300
Sun Oct 19 2014 01:01:01 GMT-0200
Mon Oct 20 2014 01:01:01 GMT-0200
结果以字符串形式表示明天的日期。使用新的Date()获取今天的日期,使用Date.getDate()和Date.setDate()添加一天,然后将Date对象转换为字符串。
const tomorrow = () => {
let t = new Date();
t.setDate(t.getDate() + 1);
return `${t.getFullYear()}-${String(t.getMonth() + 1).padStart(2, '0')}-${String(
t.getDate()
).padStart(2, '0')}`;
};
tomorrow();
JavaScript日期的时区/夏令时感知日期增量:
function nextDay(date) {
const sign = v => (v < 0 ? -1 : +1);
const result = new Date(date.getTime());
result.setDate(result.getDate() + 1);
const offset = result.getTimezoneOffset();
return new Date(result.getTime() + sign(offset) * offset * 60 * 1000);
}