增加30分钟时间使其回去30分钟
我一个JavaScript Date对象等于00:30时并执行:增加30分钟时间使其回去30分钟
date.setMinutes(date.getMinutes() + 30);
导致日期对象等于00:00。
有谁知道为什么会发生这种情况?
这里是正在使用的代码:
for (var i = openTime; i <= closeTime; i.setMinutes(i.getMinutes() + timeIncrement)) {
var time = i.getHours() + (i.getHours() == 0 ? '0' : '') + ':' + i.getMinutes() + (i.getMinutes() == 3 || i.getMinutes() == 0 ? '0' : '');
$(timeClientId).append($('<option />').val(time).text(time));
}
以上脚本创建从上午10点的可用时间列表一路到第二天上午02点00分。
它运行正常,直到它许多成功迭代后到达午夜00:00。
任何人都可以帮忙吗?
谢谢!
接听/ SOLUTION:
此问题是由于夏令问题,所以这个周六的时钟往前走。出于某些奇怪的原因,当将时间增加30分钟到12:30时,使用.setMinutes()重置为12:00。这使它无限循环。 解决的办法是添加使用 i.setTime(i.getTime()+ timeIncrement * 60 * 1000) 这个排序的问题分钟。
干杯所有的答案!
你只设定分钟。所以当然30分钟+30分钟等于60分钟,即0分钟。
使用这个聪明的方法(这是聪明的,因为它与所有翻车的作品!):
function addMinutes(inDate, inMinutes)
{
var newdate = new Date();
newdate.setTime(inDate.getTime() + inMinutes * 60000);
return newdate;
}
var date = new Date();
alert(addMinutes(date,-30));
你如何初始化你的约会? setMinutes似乎按预期工作,因此您的初始值可能存在错误。请参阅下面的快速ñ脏测试。
var date = new Date(0);
document.write(date);
document.write("<br>");
date.setMinutes(30);
document.write(date);
document.write("<br>");
date.setMinutes(date.getMinutes() + 30);
document.write(date);
document.write("<br>");
输出:
Thu Jan 1 00:00:00 UTC 1970
Thu Jan 1 00:30:00 UTC 1970
Thu Jan 1 01:00:00 UTC 1970
这是正确的。我不知道那个日期做了自动翻转。 – Karlth 2012-03-22 11:00:52
试试这个:
var date = new Date(2013,2,31,1,59);
document.write(date,"<br>");
date.setMinutes(date.getMinutes()+30);
document.write(date,"<br>");
date.setMinutes(date.getMinutes() + 30);
document.write(date,"<br>");
date.setMinutes(date.getMinutes() + 30);
document.write(date,"<br>");
Sun Mar 31 2013 01:59:00 GMT+0100 (CET)
Sun Mar 31 2013 01:29:00 GMT+0100 (CET)
Sun Mar 31 2013 01:59:00 GMT+0100 (CET)
Sun Mar 31 2013 01:29:00 GMT+0100 (CET)
如此明显的切换到夏天的时候在德国是导致此结果。 但是这是打算? 输入2013,2,31,2,59的结果相同,好像1-2小时不存在一样。 它看起来并不适合我。
谢谢您的回答。你会如何将时间增加30分钟? – Base33 2012-03-22 10:32:11
添加了一个示例。 – Karlth 2012-03-22 10:46:55
谢谢。这也是正确的。 – Base33 2012-03-22 13:52:10