繁体   English   中英

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

[英]Date Returning NaN In Mozilla and IE With Javascript

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

问题是我认为当我调用这行代码时:

var unixtime = new Date(timestamp).getTime() / 1000;

timestamp将类似于: 2015-07-28 08:55:53 (例如)。

我调用的所有其他行似乎都可以正常工作,而且这在 Chrome 中也能正常工作。 那么为什么这段代码在 Mozilla 和 IE 中不起作用呢?

这是我的完整代码:

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";

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

从 MDN 上的日期开始:

新日期(日期字符串);

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

来自 MDN 上的Date.parse()

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

(粗体是我的)

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]]]]]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM