代码之家  ›  专栏  ›  技术社区  ›  b. e. hollenbeck

javascript Unix时代奇怪

  •  0
  • b. e. hollenbeck  · 技术社区  · 15 年前

    我有一部分脚本用于计算事件的剩余天数:

    var currTime = Math.round(new Date().getTime() / 1000.0);
    var dispDate = event.find('UnixEpoch').text();
    var diffDate = (dispDate - currTime) / 86400;
    var dateRound = Math.round(diffDate) - 30;
    

    第一行获取当前的Unix历元时间并去掉毫秒数。第二行从XML提要获取将来的事件日期。如果我把这两个时间都放到一个在线的历元计算器中,我就能得到正确的currtime和dispdate的日期。但是当我将它们划分为天(第三行)时,最终结果会被取消超过30天,这要求我使用最后一行来获得正确的天数。

    现在,这已经够奇怪了。但还有别的事情我想不出来。它以前是31天关闭,现在这是错误的,所以我把脚本改为30天,这是正确的。

    有人能指出我做错了什么吗?我一辈子都弄不明白为什么会发生这种事,我宁愿不继续调整它。

    2 回复  |  直到 15 年前
        1
  •  1
  •   Alnitak    15 年前

    从表面上看,代码看起来不错。

    尝试将 currTime dispDate 在你做减法之前,看看它们是否一致。

    您报告的错误表明代码的某个月部分出现了逐次错误。这个月有30天,上个月有31天。错误的可能位置在 event.find('UnixEpoch') 打电话。

        2
  •  0
  •   Justin Love    15 年前

    事件日期是否由其他javascript处理?如果您使用 new Date(year, month, day, etc...) 格式,月份以零为基础,很容易忘记。