我们在进行网站开发的时候有可能会涉及到国外的用户或者用户身在国外,这时就会存在时差问题,比如说我们在中国的时间是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