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

使用Javascript在Mozilla和IE中返回日期,javascript,mysql,internet-explorer,mozilla,Javascript,Mysql,Internet Explorer,Mozilla,目前,我一直在不同的浏览器中测试我的时间函数。我只是简单地抓取一个MySql时间戳并将其转换为Unix时间,问题是它在Mozilla或Internet Explorer中不起作用 问题是当我调用这行代码时: var unixtime = new Date(timestamp).getTime() / 1000; 时间戳类似于:2015-07-28 08:55:53(例如) 我调用的所有其他行似乎都工作得非常好,而且,这是在Chrome中工作的。那么为什么这段代码在Mozilla和IE中不起作用

目前,我一直在不同的浏览器中测试我的时间函数。我只是简单地抓取一个MySql时间戳并将其转换为Unix时间,问题是它在Mozilla或Internet Explorer中不起作用

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

var unixtime = new Date(timestamp).getTime() / 1000;
时间戳类似于:
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";
函数添加(值){
如果(值==1){
var字符串=”;
}
否则{
var string=“s”;
}
返回字符串;
}
函数时间(时间戳){
var unixtime=新日期(时间戳).getTime()/1000;
var unixtimenow=new Date().getTime()/1000;
var timediff=unixtimenow-unixtime;
var timediffmins=数学轮(timediff/60);
var timediffhours=数学整数(timediffmins/60);
var timediffdays=数学整数(timediffhours/24);
var timediffweeks=数学轮(timediffdays/7);
var timediffmonths=数学轮(timediffweeks/4);
var timediffyears=数学整数(timediffmonths/12);
var值=null;
如果(时间差<60){
value=“片刻”;
}
否则如果(时间差分钟<60){
值=timediffmins+“分钟”+相加(timediffmins);
}
否则如果(时间差小时<24){
值=timediffhours+“hour”+相加(timediffhours);
}
否则如果(timediffdays<7){
值=timediffdays+“day”+相加(timediffdays);
}
否则如果(timediffweeks<4){
值=timediffweeks+“week”+相加(timediffweeks);
}
否则如果(timediffmonths<12){
值=timediffmonths+“月”+加(timediffmonths);
}
否则{
值=timediffyears+“年”+加上(timediffyears);
}
返回值;
}
timeago(数据[k][“datecreated”])+“ago”;

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

来自MDN:

新日期(日期字符串)

表示日期的字符串值。字符串的格式应为 由Date.parse()方法(符合IETF的RFC 2822)识别 时间戳,也是ISO8601的一个版本)

从MDN开始:

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

(粗体是我的)

RFC2822格式化日期的示例:

Mon, 25 Dec 1995 13:30:00 GMT
ISO格式示例:

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

请尝试按照标准格式化字符串,或对其进行解析并使用构造函数:

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

好的,谢谢你,我会测试一下,然后让你知道:)效果很好!:)谢谢你,如果你好奇的话,这里是我使用的代码
var t=timestamp.split(/[-:]/);var unixtime=新日期(t[0],t[1]-1,t[2],t[3],t[4],t[5])/1000
new Date(year, month[, day[, hour[, minutes[, seconds[, milliseconds]]]]]);