Spring时区转换问题
spring转json的默认实现jackson中会根据时区去转换时间,而jackson的默认时区跟国内是相差8小时的。
解决方法:
重新设置当前项目地所在时区。使用注解的方法。
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
Javascript时区转换问题
方法一:
/**
* 日期转换
* @param datetime
* @param fmt
* @returns {*}
* @constructor
*/
function Format(datetime,fmt) {
if (parseInt(datetime)==datetime) {
if (datetime.length==10) {
datetime=parseInt(datetime)*1000;
} else if(datetime.length==13) {
datetime=parseInt(datetime);
}
}
datetime=new Date(datetime);
var o = {
"M+" : datetime.getMonth()+1, //月份
"d+" : datetime.getDate(), //日
"h+" : datetime.getHours(), //小时
"m+" : datetime.getMinutes(), //分
"s+" : datetime.getSeconds(), //秒
"q+" : Math.floor((datetime.getMonth()+3)/3), //季度
"S" : datetime.getMilliseconds() //毫秒
};
if(/(y+)/.test(fmt))
fmt=fmt.replace(RegExp.$1, (datetime.getFullYear()+"").substr(4 - RegExp.$1.length));
for(var k in o)
if(new RegExp("("+ k +")").test(fmt))
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
return fmt;
}
方法二:
function setTime(datetime,i) {
//参数i为时区值数字,比如北京为东八区则输进8,西5输入-5
if (typeof i !== 'number') return;
var d = new Date(datetime);
console.log('d:'+ d);
//得到1970年一月一日到现在的秒数
var len = d.getTime();
//本地时间与GMT时间的时间偏移差
var offset = d.getTimezoneOffset() * 60000;
//得到现在的格林尼治时间
var utcTime = len + offset;
return new Date(utcTime + 3600000 * i);
}
方法三:
function dateToGMT(strDate){
var dateStr=strDate.split(" ");
var strGMT = dateStr[0]+" "+dateStr[1]+" "+dateStr[2]+" "+dateStr[5]+" "+dateStr[3]+" GMT+0800";
var date = new Date(Date.parse(strGMT));
return date;
}