我已经看到了一些关于此的问题,但似乎没有一个适用于所有浏览器的通用解决方案。
在我的网页上,我提取了一个MYSQL时间戳' YYYY-MM-DD hh:mm:ss'在UTC中。但是,我需要在Javascript中转换这个时间戳,以本地子午线格式显示时间......(即晚上8点)。
我找到的最接近的解决方案是追加' UTC'到MySQL timstamp字符串并创建一个这样的日期对象。但是,此解决方案在Safari中不起作用。如果有人知道解决方案,请告诉我。
提前谢谢。
答案 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 ));
}