sUTC就是世界标准时间,与北京时间相差八个时区。所以只要将UTC时间转化成一定格式的时间,再在此基础上加上8个小时就得到北京时间了。
首先UTC时间格式先转换成 (时间 Fri Nov 27 2020 10:58:41 GMT+0800 (中国标准时间))这种时间格式 之后就对该时间串进行获取年月日时分秒 之后对获取的时间进行拼接。
1. utc时间格式转换成北京时间(js)
var UTCDateStr='Fri Nov 27 2020 10:58:41 GMT+0800'
console.log("UTCDateStr:",UTCDateStr)
console.log("time:",timeChange(UTCDateStr))
/**
* @param UTCDateStr
* @returns {string}
*/
function timeChange(UTCDateStr) {
if (!UTCDateStr) {
return '-';
}
function formatFunc(str) {
return str > 9 ? str : '0' + str
}
var date2 = new Date(UTCDateStr);
console.log('时间', date2)
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; // 12小时制
hour = formatFunc(hour);
var min = formatFunc(date2.getMinutes());
var sec = formatFunc(date2.getSeconds());
var dateStr = year + '-' + mon + '-' + day + ' ' + hour + ':' + min + ':' + sec;
return dateStr;
}
2. utc时间格式转换成北京时间(java)
UTCToCST("2017-11-27T03:16:03.944Z",
"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
public void UTCToCST(String UTCStr, String format) {
try {
Date date = null;
SimpleDateFormat sdf = new SimpleDateFormat(format);
date = sdf.parse(UTCStr);
System.out.println("UTC时间: " + date);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.HOUR, calendar.get(Calendar.HOUR) + 8);
//calendar.getTime() 返回的是Date类型,
// 也可以使用calendar.getTimeInMillis()获取时间戳
Log.e("time--","UTCStr: " + UTCStr);
Log.e("time--","北京时间: " + calendar.getTime());
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
}