在Javascript中将MySQL时间戳转换为本地时间

时间:2014-10-19 00:46:10

标签: javascript date datetime datejs

我已经看到了一些关于此的问题,但似乎没有一个适用于所有浏览器的通用解决方案。

在我的网页上,我提取了一个MYSQL时间戳' YYYY-MM-DD hh:mm:ss'在UTC中。但是,我需要在Javascript中转换这个时间戳,以本地子午线格式显示时间......(即晚上8点)。

我找到的最接近的解决方案是追加' UTC'到MySQL timstamp字符串并创建一个这样的日期对象。但是,此解决方案在Safari中不起作用。如果有人知道解决方案,请告诉我。

提前谢谢。

2 个答案:

答案 0 :(得分:0)

在JS中将MySQL timestamp转换为Date对象然后使用getTimezoneOffset()是一种有效的方法。根据ECMAScript规范,Date应如下所示:YYYY-MM-DDTHH:MM:SS,因此您应该正确格式化日期(string replace(' ', 'T')

如果它仍然不起作用,这是一个在所有浏览器中工作的日期格式列表,如here所述

var d = new Date(2011, 01, 07); 
var d = new Date(2011, 01, 07, 11, 05, 00);  
var d = new Date("02/07/2011"); 
var d = new Date("02/07/2011 11:05:00");
var d = new Date(1297076700000);
var d = new Date("Mon Feb 07 2011 11:05:00 GMT");

答案 1 :(得分:0)

首先将MySql日期字符串转换为JavaScript Date对象。然后将此gmt日期对象转换为本地日期对象。

function mysqlGmtStrToJSDate(str) {

        var t = str.split(/[- :]/);

        // Apply each element to the Date function
        return new Date(t[0], t[1]-1, t[2], t[3], t[4], t[5]);

    }

    function mysqlGmtStrToJSLocal(str) {
        // first create str to Date object
        var g = mysqlGmtStrToJSDate(str);
        // 
        return new Date(g.getTime() - ( g.getTimezoneOffset() * 60000 ));
    }