2012年10月4日至10月5日在JavaScript中有一个小时



这是我发现的。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小时。

相关内容

最新更新