使用Javascript在Mozilla和IE中返回NaN的日期

时间:2015-07-28 21:12:19

标签: javascript mysql internet-explorer mozilla

目前,我一直在不同的浏览器中测试我的时间功能。我只是抓取一个MySql时间戳并将其转换为Unix时间,问题是在Mozilla或Internet Explorer中无效!

当我调用这行代码时,我想问题是:

timestamp

2015-07-28 08:55:53类似于:function addS(value) { if (value == 1) { var string = ""; } else { var string = "s"; } return string; } function timeago(timestamp) { var unixtime = new Date(timestamp).getTime() / 1000; var unixtimenow = new Date().getTime() / 1000; var timediff = unixtimenow - unixtime; var timediffmins = Math.round(timediff / 60); var timediffhours = Math.round(timediffmins / 60); var timediffdays = Math.round(timediffhours / 24); var timediffweeks = Math.round(timediffdays / 7); var timediffmonths = Math.round(timediffweeks / 4); var timediffyears = Math.round(timediffmonths / 12); var value = null; if (timediff < 60) { value = "a moment"; } else if (timediffmins < 60) { value = timediffmins + " minute" + addS(timediffmins); } else if (timediffhours < 24) { value = timediffhours + " hour" + addS(timediffhours); } else if (timediffdays < 7) { value = timediffdays + " day" + addS(timediffdays); } else if (timediffweeks < 4) { value = timediffweeks + " week" + addS(timediffweeks); } else if (timediffmonths < 12) { value = timediffmonths + " month" + addS(timediffmonths); } else { value = timediffyears + " year" + addS(timediffyears); } return value; } timeago(data[k]["datecreated"]) + " ago"; (例如)。

我调用的所有其他行似乎都运行得很好,而且这在Chrome中也有效。那么为什么这段代码不适用于Mozilla和IE?

这是我的完整代码:

def gen():
    state = [None]

    for i in range(5):
        state[0] = i
        yield state

如此简单,我的问题是,为什么这不适用于所有浏览器?

1 个答案:

答案 0 :(得分:2)

来自MDN的Date

  

new Date(dateString);

     

表示日期的字符串值。字符串应采用格式   由Date.parse()方法识别(符合IETF的RFC 2822   时间戳以及ISO8601的版本。

来自MDN的Date.parse()

  

表示RFC2822或ISO 8601日期的字符串(其他格式可以   使用,但结果可能是意料之外的)。

(Bold是我的)

RFC2822格式化日期示例:

Mon, 25 Dec 1995 13:30:00 GMT

ISO格式示例:

2011-10-10
2011-10-10T14:48:00

您的日期不是这两种格式之一,因此浏览器行为未定义。

尝试按照标准格式化字符串,或者使用构造函数解析它:

new Date(year, month[, day[, hour[, minutes[, seconds[, milliseconds]]]]]);