我有以下操作,它应该以指定的格式解析日期。但它不会解析并抛出不可解析的异常。 有人可以纠正我错在哪里。该字段是TimeStamp,DB是Oracle。
private XMLGregorianCalendar stringToXMLGregorianCalendar(String s)
throws DatatypeConfigurationException, ParseException {
XMLGregorianCalendar result = null;
Date date = null;
SimpleDateFormat simpleDateFormat;
GregorianCalendar gregorianCalendar;
simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
try {
date = simpleDateFormat.parse(s);
gregorianCalendar = (GregorianCalendar) GregorianCalendar
.getInstance();
gregorianCalendar.setTime(date);
result = DatatypeFactory.newInstance().newXMLGregorianCalendar(
gregorianCalendar);
} catch (java.text.ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
答案 0 :(得分:6)
根据JavaDoc,"yyyy-MM-dd'T'HH:mm:ss.SSSZ"
等同于2001-07-04T12:08:56.235-0700
。如果您注意到,T
仍然存在。
在您的错误中,日期似乎如下:2015-10-08 05:00:00.0”
格式为yyyy-MM-dd HH:mm:ss.S
,但您使用的格式为:yyyy-MM-dd'T'HH:mm:ss
。您需要省略额外的'T'
并添加一个额外的.S
以匹配它的milli secon方面。