San*_*anu 391 javascript datetime date
我需要在JavaScript中将日期值增加一天.
例如,我有一个日期值2010-09-11,我需要将第二天的日期存储在JavaScript变量中.
如何将日期增加一天?
T.J*_*der 723
三种选择:
Date对象(无库):我之前对#1的回答是错误的(它增加了24小时,没有考虑到夏令时的转换; Clever Human指出它将在2010年11月7日在东部时区失败).相反,Jigar的答案是没有库的正确方法:
var tomorrow = new Date();
tomorrow.setDate(tomorrow.getDate() + 1);
Run Code Online (Sandbox Code Playgroud)
这甚至适用于一个月(或一年)的最后一天,因为JavaScript日期对象对翻转很聪明:
var lastDayOf2015 = new Date(2015, 11, 31);
snippet.log("Last day of 2015: " + lastDayOf2015.toISOString());
var nextDay = new Date(+lastDayOf2015);
var dateValue = nextDay.getDate() + 1;
snippet.log("Setting the 'date' part to " + dateValue);
nextDay.setDate(dateValue);
snippet.log("Resulting date: " + nextDay.toISOString());Run Code Online (Sandbox Code Playgroud)
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="//tjcrowder.github.io/simple-snippets-console/snippet.js"></script>Run Code Online (Sandbox Code Playgroud)
(这个答案目前已被接受,所以我不能删除它.在它被接受之前我向OP建议他们接受Jigar的,但也许他们接受了这个用于列表上的第2项或第3项.)
var today = moment();
var tomorrow = moment(today).add(1, 'days');
Run Code Online (Sandbox Code Playgroud)
(请注意,add修改您调用它的实例,而不是返回一个新实例,因此today.add(1, 'days')会修改today.这就是我们开始克隆操作的原因var tomorrow = ....)
var today = new Date(); // Or Date.today()
var tomorrow = today.add(1).day();
Run Code Online (Sandbox Code Playgroud)
Jig*_*shi 166
var myDate = new Date();
//add a day to the date
myDate.setDate(myDate.getDate() + 1);
Run Code Online (Sandbox Code Playgroud)
Cle*_*man 33
此答案中的所有示例似乎都不适用于夏令时调整日.在那些日子里,一天中的小时数不是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;
}
Run Code Online (Sandbox Code Playgroud)
以下是我用来测试函数的测试:
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());
Run Code Online (Sandbox Code Playgroud)
小智 26
最简单的方法是转换为毫秒并添加1000*60*60*24毫秒,例如:
var tomorrow = new Date(today.getTime()+1000*60*60*24);
Run Code Online (Sandbox Code Playgroud)
jpm*_*tin 20
明天在纯JS的一行,但它很丑!
new Date(new Date().setDate(new Date().getDate() + 1))
Run Code Online (Sandbox Code Playgroud)
结果如下:
Thu Oct 12 2017 08:53:30 GMT+0200 (Romance Summer Time)
Run Code Online (Sandbox Code Playgroud)
ein*_*nus 12
您首先需要在遵循其他人的建议之前解析您的字符串:
var dateString = "2010-09-11";
var myDate = new Date(dateString);
//add a day to the date
myDate.setDate(myDate.getDate() + 1);
Run Code Online (Sandbox Code Playgroud)
如果您希望它再次以相同的格式返回,则必须"手动"执行此操作:
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("-");
Run Code Online (Sandbox Code Playgroud)
但我建议得到Date.js在其他答复中提到,这将帮助你很多.
Pol*_*olv 11
我觉得没有什么比.getTime()and更安全的了.setTime(),所以这应该是最好的,也是性能最好的。
const d = new Date()
console.log(d.setTime(d.getTime() + 1000 * 60 * 60 * 24)) // MILLISECONDS
Run Code Online (Sandbox Code Playgroud)
.setDate() 对于无效日期(如 31 + 1)太危险了,这取决于浏览器的实现。
小智 6
获得接下来的 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)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
426001 次 |
| 最近记录: |