一个泰国项目,查询处理时间,页面展示与表中时间不一致问题
三个环境:
1,本地测试环境
2,跳板机环境,连接泰国生产环境
3,泰国生产环境
1,3环境,时间展示正确,与表中数据一致。
2环境,页面展示比表中数据,晚了一个小时。
如下图:表中时间为:16:51:23,页面展示时间为:17:51:23
而北京与泰国时差刚好一个小时,定位到时间差应该由时差导致。
处理思路
1,定义数据字典区别北京时间,泰国时间,UTC时间(全世界统一时间)。
2,登录时把不同字典值传入:北京(东八区):8,泰国:7,utc:0
3,时间入参:数据库时间是:年月日时分秒,传到前端是毫秒数。
代码:
export function timechange(dataTime, hms) {
if (!dataTime) {
return ''
};
//正则判断日期格式
var reg = RegExp(/-/)
if(reg.test(dataTime)){
dataTime=dataTime.replace(/-/g,'/')
}
var unixTimestamp = new Date(dataTime)
var timeZone = localStorage.getItem('timeZone');
if(!timeZone){
timeZone = 0;
}
var year = unixTimestamp.getUTCFullYear()
var month = unixTimestamp.getUTCMonth() + 1
var day = unixTimestamp.getUTCDate()
var hour = unixTimestamp.getUTCHours() + Number(timeZone)
var min = unixTimestamp.getUTCMinutes()
var sec = unixTimestamp.getUTCSeconds()
// unixTimestamp.getSeconds()
if ((month) < 10) {
month = '0' + month
}
if ((day) < 10) {
day = '0' + day
}
if ((hour) < 10) {
hour = '0' + hour
}
if ((min) < 10) {
min = '0' + min
}
if ((sec) < 10) {
sec = '0' + sec
}
if (hms == 'hms') { // 这个是2018530格式
var traslateTime = year + '' + month + '' + day
} else if (hms == 'h') { // 2018-5-30 23:59:59
var traslateTime = year + '-' + month + '-' + day + ' ' + 23 + ':' + 59 + ':' + 59
} else if (hms == 'hm') { // yymmdd hhmmss
var traslateTime = year + '-' + month + '-' + day + ' ' + hour + ':' + min + ':' + sec
} else if (hms == 's') { // 2018-5-5 00 00 00
var traslateTime = year + '-' + month + '-' + day + ' ' + hour + ':' + min + ':' + sec
} else { // 2018-5-30
var traslateTime = year + '-' + month + '-' + day
}
// return new Date(traslateTime)
return traslateTime
}
export default timechange