近期做一个项目,后台返回的日期是RFC3339格式的。之前没有看到过,当中遇到了几个问题以及解决
2015-11-18T14:49:55Z的Format为
1、2015-11-18T14:49:55Z转换
在SimpleDateFormat中给出了几种格式
yyyy-MM-dd 1969-12-31
* yyyy-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
2015-11-18T14:49:55Z的Format为
yyyy-MM-dd'T'HH:mm:ss'Z'
2、时区转换一開始转换的时间总是有问题。然后跟后台人员说了,最后后台给出他们使用了GMT+0,而我这边默认使用GMT+8时区,因为最后显示依照GMT+8显示的,所以须要把2015-11-18T14:49:55Z依照GMT+0时区解析成Date。如今的Date是就是我们当前时区
public static String DateTZ2Normal(String datetime) { try { SimpleDateFormat formatTZ = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); formatTZ.setTimeZone(TimeZone.getTimeZone("GMT+0")); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date TZDate = formatTZ.parse(datetime); return format.format(TZDate); } catch (Exception e) { e.printStackTrace(); } return ""; }