Pet*_*r T 0 java date simpledateformat datetime-parsing
我用以下代码解析datetime:
String parseDate(String tranDateTime, String originalDateFormat, String toDateFormat) throws ParseException {
SimpleDateFormat originalMonthYear = new SimpleDateFormat(originalDateFormat);
Date date = originalMonthYear.parse(tranDateTime);
SimpleDateFormat formatter = new SimpleDateFormat(toDateFormat);
return formatter.format(date);
}
Run Code Online (Sandbox Code Playgroud)
并尝试解析日期时间值,如下所示:
parseDate("2017-08-16T00:00:00Z",
"yyyy-MM-dd'T'HH:mm:ss.SSSXXX", "yyyy-MM-dd HH:mm:ss");
Run Code Online (Sandbox Code Playgroud)
抛出异常:
java.text.ParseException:无法解析的日期:"2017-08-16T00:00:00Z"
但是,当我更改日期值时"2017-08-16T02:54:15.537Z",功能正常.我不知道为什么.
问题来自:
Date date = originalMonthYear.parse(tranDateTime);
Run Code Online (Sandbox Code Playgroud)
这个日期
2017-08-16T00:00:00Z
Run Code Online (Sandbox Code Playgroud)
与模式不匹配
yyyy-MM-dd'T'HH:mm:ss.SSSXXX
Run Code Online (Sandbox Code Playgroud)
因为缺少毫秒(SSS部分)
所以
Date date = originalMonthYear.parse(tranDateTime);
Run Code Online (Sandbox Code Playgroud)
抛出异常
java.text.ParseException: Unparseable date: "2017-08-16T00:00:00Z"
Run Code Online (Sandbox Code Playgroud)
解决方案
2017-08-16T00:00:00Z为2017-08-16T00:00:00.000Z(添加毫秒到您的日期)yyyy-MM-dd'T'HH:mm:ss.SSSXXX为yyyy-MM-dd'T'HH:mm:ssXXX(从模式中删除毫秒)