在大家开发时会遇到这种情况:
服务器是以东八时区为准(即中国标准时间),但是客户端会在不同地方,比如说雅典 开罗(+2),格陵兰(-3),夏威夷(-10),当客户端选择某一个时间后,传递给服务器的时间戳,是以当地时区来解析的时间戳,这样就会出现一个时间差的问题,从而造成时间不准确。下面我们就来解决这种问题。
解决思路:服务器是北京时间,这个是无法改变的。改变的就是客户端的时间戳。首先确定客户端时区,获得当地时间戳后,加上或减去时间差值,就可以得到北京时间戳。在传递给服务器。
传递给服务器后,服务器返回的也是北京时间戳,这个时候就需要反解析一下这个时间戳。还是先确认时区,再用服务器返回的北京时间戳加上或减去时间差值,得到当地时间戳,再解析渲染页面等后续操作。
获取本地时间后转换成北京时间:
function getBeijingtime(d) { //获得当前运行环境时间 var date = new Date(d); currentDate = date.getTime(); // 算得时区 var time_zone = -date.getTimezoneOffset() / 60; // console.log(time_zone) if (time_zone < 0) { time_zone = Math.abs(time_zone) + 8; currentDate += time_zone*60*60*1000 } else { if(time_zone < 8 && time_zone > 0){ time_zone = time_zone - 8; currentDate += Math.abs(time_zone*60*60*1000) }else{ time_zone = time_zone - 8; currentDate -= Math.abs(time_zone*60*60*1000) } } return currentDate; }
北京时间解析成当地时间:
标签:zone,60,currentDate,时间,time,解决,服务器,时区,方法 From: https://www.cnblogs.com/jickma/p/13098690.html