今天接入后台接口,突然发现服务器返回时间:2022-11-11T12:02:07.000+00:00
气冲冲去找后台,告诉对方不能返时区时间。明明我上传的时间并没有卸载时区,为什么返回来的时间却变成这个样子。
后台回答:前段已经接入,不能修改。瞬间感觉一万头羊驼奔头来过。
好吧,只能我修改了。
SimpleDateFormat已经为我们提供不同的转换方法,对照表如下:
//HH显示的是24小时制,hh显示的是12小时制
时间格式 对应时间
yyyy-MM-dd 1969-12-31
yyy-MM-dd 1970-01-01
yyyy-MM-dd HH:mm 1969-12-31 16:00
yyyy-MM-dd HH:mm 1970-01-01 00:00
yyyy-MM-dd HH:mmZ 1969-12-31 16:00-0800
yyyy-MM-dd HH:mmZ 1970-01-01 00:00+0000
yyyy-MM-dd HH:mm:ss.SSSZ 1969-12-31 16:00:00.000-0800
yyyy-MM-dd HH:mm:ss.SSSZ 1970-01-01 00:00:00.000+0000
yyyy-MM-dd'T'HH:mm:ss.SSSZ 1969-12-31T16:00:00.000-0800
yyyy-MM-dd'T'HH:mm:ss.SSSZ 1970-01-01T00:00:00.000+0000
主要功能代码
//服务器时区格式
SimpleDateFormat simple1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.000+00:00");
//需要展示时间格式
SimpleDateFormat simple = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
可以根据项目需求,更换不同的时间格式。
附完整方法方法
public String timezoneToTime(String timezone) {
//服务器时区格式
SimpleDateFormat simple = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.000+00:00");
//需要展示时间格式
SimpleDateFormat toSimple = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 本地时区
Calendar nowCal = Calendar.getInstance();
TimeZone localZone = nowCal.getTimeZone();
// 设定SDF的时区为本地
toSimple.setTimeZone(localZone);
// 设置时间区域为GMT
simple.setTimeZone(TimeZone.getTimeZone("GMT"));
try {
//解析GMT时间
Date fromDate = simple.parse(timezone);
// GMT转当前时区时间
String toTime = toSimple.format(fromDate);
return toTime;
} catch (Exception e) {
e.printStackTrace();
}
return "yyyy-MM-dd HH:mm:ss";
}