使用Javascript将当前时间的MySQL时间戳转换为

使用Javascript将当前时间的MySQL时间戳转换为

问题描述:

我已经看到了一些关于此问题的问题,但是对于所有浏览器而言,没有一个可以作为通用解决方案。使用Javascript将当前时间的MySQL时间戳转换为

在我的网页上,我以UTC获取MYSQL时间戳'YYYY-MM-DD hh:mm:ss'。但是,我需要在Javascript中将此时间戳转换为仅显示当地子午线格式的时间......(即下午8:00)。

我发现最接近的解决方案是将'UTC'附加到MySQL timstamp字符串并创建一个类似的日期对象。但是,此解决方案在Safari中不起作用。在任何人都知道的解决方案,请让我知道。

预先感谢您。

+0

还有'时刻时区',可以提供一个跨浏览器的方式来做你想做的。请参阅:http://momentjs.com/timezone/ – Gohn67 2014-10-19 01:07:07

在JS中转换MySQL timestampDate对象然后使用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"); 
+0

哪里会使用getZoneOffSet()? – 2014-10-19 02:00:18

+0

你将会有'var date = new Date(); date.setTime(1297076700000 - (date.getTimezoneOffset()* 60 * 1000)); dateString = date.toUTCString();' – 2014-10-19 03:11:29

首先转换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)); 
    }