我有一個DateTimeXmlAdapter,我用來將Joda日期轉換爲字符串。它看起來如下:如何在日期時間結束時正確添加'Z',該日期時間由Spring MVC和JAXB編組?
public class DateTimeXmlAdapter extends XmlAdapter<String, DateTime> {
private static final String PATTERN = "yyyy-MM-dd'T'HH:mm:ssZ";
private static final DateTimeFormatter formatter = DateTimeFormat.forPattern(PATTERN);
@Override
public DateTime unmarshal(String value) {
return formatter.parseDateTime(value);
}
@Override
public String marshal(DateTime value) {
return formatter.print(value);
}
}
這將導致以下字符串中的XML:
2014-10-16T18:31:57-0400
然而,端點我送這預計在最後一個「Z」,而不是-0400 。他們建議轉換爲UTC,因此不需要發送時區信息。我感覺合理。然而,除非我從字面上說明,否則我似乎無法得到'Z'的結果。如:
private static final String PATTERN = "yyyy-MM-dd'T'HH:mm:ss'Z'";
下面的討論似乎表明不建議添加Z.
Validating Timestamp format yyyy-MM-dd'T'HH:mm:ssZ in java?
它試圖將其更改爲以下,但是這導致日期W/O型的 'Z'。
public class DateTimeXmlAdapter extends XmlAdapter<String, DateTime> {
private static final DateTimeFormatter formatter = ISODateTimeFormat.dateHourMinuteSecond().withZoneUTC();
@Override
public DateTime unmarshal(String value) {
return formatter.parseDateTime(value);
}
@Override
public String marshal(DateTime value) {
return formatter.print(value);
}
}
輸出:
2014-10-17T18:50:43
我說的端點說,他們所需要的 'Z',因爲它表明從UTC偏移量爲零。在使用Joda Time和JAXB時,最後添加'Z'的正確方法是什麼?
感謝,
馬特