这是我发现的。2012年10月4日午夜至10月5日午夜有25小时。也许在世界某些地方,有一个我不知道的DST?
当您致电JavaScripts天生gettime时: - 在IE和Mozilla中。 - 这仍然在客户端。一天中通常有86400秒,10月5日至4日之间的差异是90000(额外一个小时) - 仅在2012年失败。 -> 07/05/2011 - 10/05/2011作品…2012年没有。-07/04/2012 - 10/04/2012作品
这是代码的摘录。元素是格式" mm/dd/yyyy" 的字符串
var fromDateElement = document.getElementById("filterFromDate");
var toDateElement = document.getElementById("filterToDate");
if (fromDateElement == null || fromDateElement.value == ""
|| toDateElement == null || toDateElement.value == "") {
alert(dojoCallGetLocalizedMessage("please.enter.filter.dates"));
return false;
}
var fromArr = fromDateElement.value.split("/");
var toArr = toDateElement.value.split("/");
var timeSpread = (new Date(toArr[2],toArr[0],toArr[1]).getTime()) -
(new Date(fromArr[2],fromArr[0],fromArr[1]).getTime());
if (timeSpread > <%= ONE_DAY_IN_MILLIS %>) {
alert(dojoCallGetLocalizedMessage("not.a.day"));
return false;
}
return true;
(Millis的一天设置为864000000)此外,DST有逻辑可获得的逻辑,但在10月
在JavaScript中,数月从0
(1月)到11
(12月)&Mdash;请参阅MDN页面以获取Date
&MDASH;因此,#10
月是11月,而不是十月。您需要从月数中减去1
:
var timeSpread = (new Date(toArr[2],toArr[0]-1,toArr[1]).getTime()) -
(new Date(fromArr[2],fromArr[0]-1,fromArr[1]).getTime());
编辑以添加为任何非美国读者的好处:2012年11月4日,美国的大多数地方将从日光节省时间"倒下":00 AM,时钟被设置回1:00 AM。所以那天实际上是25小时。