Javascript 将30分钟添加到日期会使其返回30分钟

Javascript 将30分钟添加到日期会使其返回30分钟,javascript,asp.net,date,Javascript,Asp.net,Date,我有一个等于00:30的Javascript日期对象,在执行以下操作时: date.setMinutes(date.getMinutes() + 30); 使日期对象等于00:00 有人知道为什么会这样吗 下面是使用代码的地方: for (var i = openTime; i <= closeTime; i.setMinutes(i.getMinutes() + timeIncrement)) { var time = i.getHours() + (i.getHours() ==

我有一个等于00:30的Javascript日期对象,在执行以下操作时:

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));
} 

for(var i=openTime;i您只设置分钟数。因此,30分钟+30分钟的时钟当然等于60分钟,即0分钟

使用这个聪明的方法(它很聪明,因为它适用于所有翻滚!):

有一个很好的方法可以做到这一点:

new Date().add({ minutes: 30 });
或者更具流动性:

new Date().add(30).minutes();

您是如何初始化日期的?setMinutes似乎按预期工作,因此您的初始值可能有错误。请参阅下面的quick n dirty测试

var日期=新日期(0);
文件。书写(日期);
文件。写(“
”); 日期:15分钟(30); 文件。书写(日期); 文件。写(“
”); date.setMinutes(date.getMinutes()+30); 文件。书写(日期); 文件。写(“
”);
产出:

Thu Jan 1 00:00:00 UTC 1970
Thu Jan 1 00:30:00 UTC 1970
Thu Jan 1 01:00:00 UTC 1970
试试这个:

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)
var日期=新日期(2013,2,31,1,59);
文件。填写(日期“
”); date.setMinutes(date.getMinutes()+30); 文件。填写(日期“
”); date.setMinutes(date.getMinutes()+30); 文件。填写(日期“
”); date.setMinutes(date.getMinutes()+30); 文件。填写(日期“
”); 2013年3月31日星期日01:59:00 GMT+0100(CET) 2013年3月31日星期日01:29:00 GMT+0100(CET) 2013年3月31日星期日01:59:00 GMT+0100(CET) 2013年3月31日星期日01:29:00 GMT+0100(CET)
所以很明显,德国夏季的转变导致了这一结果。 但这是有意的吗? 进入2013,2,31,2,59会给出相同的结果,就好像1-2小时不存在一样。
我觉得不太对劲。

谢谢你的回答。你如何将时间增加30分钟?这是正确的。我不知道那个日期会自动滚动。
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)