java遇到日期带T和Z,提示Unparseabledate:2021-08-31T12:56:33.000Z
使用vue-element-admin提交文章时,提交的日期“2021-08-31T12:56:33.000Z”这样的字符串!
上面这个时间格式就是带T和Z这种是ISODATE .
Z是表示0时区,
对我们国家来说, 采用北京时间, 处于东八区.UTC+8 , 所以,
带Z的时间格式, 转换成北京时间需要加上 8 个小时.
而T并不代表什么.这仅仅是分隔的ISO 8601相结合的日期时间格式要求.您可以将其读作Time的缩写. 零时区的Z代表,因为它与协调世界时(UTC)相差0 .
现在需要将其转换为日期格式,
Date date=new Date();
SimpleDateFormat datestr=new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str="";
try{
date=datestr.parse(display_time);
str = sdf2.format(date);
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println(str);
但是提示Unparseable date: "2021-08-31T12:56:33.000Z"
找了好久解决方法,终于找到了!
将SimpleDateFormat datestr=new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");这里最后的Z改为X,即
SimpleDateFormat datestr=new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX");
在格式字符串的末尾使用X而不是Z:
yyyy-MM-dd'HH:MM:ss.SSSX
解析ISO-8601格式的时区偏移。
(仅当您使用Java7时有效。请参见此问题)。
有好的文章希望朋友们帮助分享推广,猛戳这里河洛伊哥