我弄不清楚这个日期格式是什么:2019-02-28T12:17:46.279+0000。我尝试了不同的日期格式来获得这个结果,但都不起作用。最接近的模式是:yyyy-MM-dd'T'HH:mm:ss.SSSZ,但是对于这个模式,输出是这样的:2019-02-28T12:17:46.279-0000 (-在秒之后,而不是+)
我得到了这个例外:
Caused by: java.lang.IllegalArgumentException: 2019-02-28T12:17:46.279+0000
at org.apache.xerces.jaxp.datatype.XMLGregorianCalendarImpl$Parser.skip(XMLGregorianCalendarImpl.java:2932)
at org.apache.xerces.jaxp.datatype.XMLGregorianCalendarImpl$Parser.parse(XMLGregorianCalendarImpl.java:2898)
at org.apache.xerces.jaxp.datatype.XMLGregorianCalendarImpl.<init>(XMLGregorianCalendarImpl.java:478)
at org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl.newXMLGregorianCalendar(DatatypeFactoryImpl.java:230)
at __redirected.__DatatypeFactory.newXMLGregorianCalendar(__DatatypeFactory.java:132)
at javax.xml.bind.DatatypeConverterImpl.parseDate(DatatypeConverterImpl.java:519)
at javax.xml.bind.DatatypeConverter.parseDate(DatatypeConverter.java:431)
at eu.europa.ec.my.custom.package.model.mapper.XsdDateTimeConverter.unmarshal(XsdDateTimeConverter.java:23)我的XsdDateTimeConverter类如下所示:
public class XsdDateTimeConverter {
public static Date unmarshal(String dateTime) {
return DatatypeConverter.parseDate(dateTime).getTime();
}
public static String marshalDate(Date date) {
final Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return DatatypeConverter.printDate(calendar);
}
public static String marshalDateTime(Date dateTime) {
final Calendar calendar = Calendar.getInstance();
calendar.setTime(dateTime);
return DatatypeConverter.printDateTime(calendar);
}
}我的postgres数据库中的解析日期如下所示:
move_timestamp timestamp(6) with time zone
2019-02-28 12:17:46.279+00在我的rest方法中,我像这样使用ObjectMapper。
MyCustomResponseDto responseDto = customService.getCustomResponseDto(query);
ObjectMapper mapper = new ObjectMapper();
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
String strValue = mapper.writeValueAsString(responseDto);
return Response.ok(strValue).build();我想我真正想要的是这个日期的正确模式。我可以进入这个页面:http://www.sdfonlinetester.info/并输入我的模式(例如yyyy-MM-dd'T'HH:mm:ss.SSSZ),它会给出该模式的实际日期输出。我需要另一条路。我想输入我的日期,它将为我提供正确的模式。
https://stackoverflow.com/questions/54926253
复制相似问题