2014-10-19 155 views
0

我已經看到了一些關於此問題的問題,但是對於所有瀏覽器而言,沒有一個可以作爲通用解決方案。使用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

回答

0

在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

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)); 
    }