2015-08-16 97 views
0

我通过Json收到了从MYSQL到Javascript的时间戳。在IE11中将MYSQL时间戳转换为JavaScript日期问题

现在我想对它做一些操作,如下所示。

    var ch = '2015-08-15 21:41:47.0'; // timestamp from mysql 
        var date = new Date(ch); // It worked fine on Chrome&Firefox 

但在IE中它返回NaN。我有GOOGLE了它,我发现日期字符串表示应该是8601

于是,我就使它看起来像new Date(1995, 11, 17, 3, 24, 0)为我做了如下图所示

   var tstamp = '2015-08-15 21:41:47.0'; 
       tstamp = tstamp.replace(/-|:|\s/g, ","); 
       var date = Date.parse(ch); 

但仍然是一个RFC2822或ISO我得到了NaN。任何帮助。

回答

0

尝试拆分和重新安排

var tstamp = '2015-08-15 21:41:47.0'; 
    tstamp = tstamp.split(/[- :]/); 

    console.log(tstamp); 

或者你也可以在MySQL或服务器端脚本修改日期格式。

0

我自己就有这个确切的问题。 当试图在ie11中使用new Date()时,默认的mysql日期格式返回错误lid Date, Invalid Date,但在firefox和chrome中正常工作。

答案其实很简单。你只需要使mysql日期字符串看起来像一个iso格式的日期字符串。 ie11支持哪一种。

(秒,毫秒和Z参数是可选的)
iso格式YYYY-MM-DDTHH:mm:ss.sssZ

因此,而不是用你的mysql日期字符串是这样的:

mysqlTime = "2017-08-01 10:19:08"; 
new Date(mysqlTime); 

您可以简单地这样的时间字符串前添加T

mysqlTime = "2017-08-01 10:19:08"; 
mysqlTime = mysqlTime.replace(/ /, "T"); 
new Date(mysqlTime); 

而现在它将很好地工作在IE9 +浏览器。 Internet Explorer 8标准模式和Quirks模式不支持ISO日期格式。 https://docs.microsoft.com/en-us/scripting/javascript/date-and-time-strings-javascript#ISO

希望这会有所帮助。