我們在進行網站開發的時候有可能會涉及到國外的用戶或者用戶身在國外,這時就會存在時差問題,比如說我們在中國的時間是08:00,但是此時韓國的時間是09:00,如果在網頁上需要進行相關顯示的話就會出現問題,那作為一個前端該怎么解決這個問題呢?
前端通過請求獲取的時間一般都是時間戳格式,這個時間戳一般就是UTC時間(*UTC:最接近標准時間的一個時間標准),而我們在網頁上需要顯示的是GMT時間,下面就是根據本地時間獲得GMT時間和任意時區的時間函數:
1.將本地時間轉化成任意時區的時間(如:通過本地時間獲取韓國的時間):
首先我們需要知道韓國的時區,這個可以網上查,韓國時區為東9區.
var d=new Date(); var localTime = d.getTime(); var localOffset=d.getTimezoneOffset()*60000; //getTimezoneOffset()返回是以分鍾為單位,需要轉化成ms var utc = localTime + localOffset; offset =9; //以韓國時間為例,東9區 korean= utc + (3600000*offset); nd = new Date(korean); console.log("Korean time is " + nd.toLocaleString());
2.UTC時間轉化為本地時區時間(UTC時間格式一般為 "2017-11-16T05:23:20.000Z");
convertUTCTimeToLocalTime: function (UTCDateString) { if(!UTCDateString){ return '-'; } function formatFunc(str) { //格式化顯示 return str > 9 ? str : '0' + str } var date2 = new Date(UTCDateString); //這步是關鍵 var year = date2.getFullYear(); var mon = formatFunc(date2.getMonth() + 1); var day = formatFunc(date2.getDate()); var hour = date2.getHours(); var noon = hour >= 12 ? 'PM' : 'AM'; hour = hour>=12?hour-12:hour; hour = formatFunc(hour); var min = formatFunc(date2.getMinutes()); var dateStr = year+'-'+mon+'-'+day+' '+noon +' '+hour+':'+min; return dateStr; },
console.log(convertUTCTimeToLocalTime("2017-11-16T05:23:20.000Z"));
//2017-11-16 PM 01:23
參考地址:http://bjtime.cn/info/view.asp?id=223