将30分钟添加到Date会使其倒退30分钟
Adding 30 minutes to Date causes it to go back 30 minutes
我有一个等于00:30的Javascript Date对象,执行此操作时:
date.setMinutes(date.getMinutes() + 30);
导致date对象等于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:00一直到第二天凌晨02:00的可用时间列表。
在多次成功迭代之后,它一直运行良好,直到午夜00:00。
有人能帮忙吗?
谢谢!
答案/解决方案:
这个问题是由于夏令时的问题,所以本周六的时钟向前走。由于一些奇怪的原因,当12:30增加30分钟时,它使用.setMinutes()重置回12:00。这使它处于一个无休止的循环中。解决方案是使用i.setTime(i.getTime()+时间增量*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似乎按预期工作,因此您的初始值中可能存在错误。请参阅下面的快速n脏测试。
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
date.js有一个很好的方法:
new Date().add({ minutes: 30 });
甚至更多的流体:
new Date().add(30).minutes();
试试这个:
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分钟为单位
- 在 JavaScript 中,范围小时 30 分钟(或 20 分钟)
- 基于时间的 javascript,创建一个大约 30 分钟的空白响应
- 通过Javascript错误将考试时间设置为30分钟
- 将时间分成 30 分钟块
- 将30分钟添加到Date会使其倒退30分钟
- 转换时间中的日期,并使用javascript在其中添加30分钟
- 3个功能每隔90分钟重复一次,间隔30分钟
- 如何使用javascript/jquery在30分钟内未使用表单字段时显示警报消息
- 如何在30分钟后停止自动保存
- 改变时间滑块到30分钟插槽而不是1小时
- Round moment.js对象时间到最接近30分钟的间隔
- 根据一天中的时间启用/禁用链接?(每次30分钟)
- 剑道UI DateTimePicker -显示从00:30到24:00的30分钟间隔
- iPad AJAX呼叫错误后30分钟
- 如何添加5小时&还有30分钟
- 我想要一个引导时间选择器从下拉列表中选择开始时间,其中持续时间间隔为30分钟
- 每30秒循环浏览一次网页列表(每30分钟更新一次页面?)
- 每30~分钟从服务器检索数据的最佳方法
- 如何在 30 分钟后注销非活动用户