我弄不清楚这个日期格式是什么: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
),它会给出该模式的实际日期输出。我需要另一条路。我想输入我的日期,它将为我提供正确的模式。
发布于 2019-02-28 21:25:45
你可以试试下面的代码
新日期格式=新日期);String SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ",_ new =format.format(新日期());
发布于 2019-02-28 22:32:20
省去了一大堆麻烦,节省了米利斯的时代。仅在UI中解析和呈现日期。很少有人类的日程安排需要计算机知道小时、日、周、月、年……但是在时间上保存一个瞬间只是一个“长”。
https://stackoverflow.com/questions/54926253
复制相似问题