【发布时间】:2020-01-27 12:25:08
【问题描述】:
我有一个 XML 响应字符串:
<timestamp ts="2018-12-05T08:00:00+02:00">55.5</timestamp>
我在JAXB 的帮助下将其映射为:
public class Timestamp {
@XmlAttribute(name = "ts")
private String timeStampAsString;
@XmlValue
private Double value;
它可以正常工作,但我想从String自动解析DateTime,所以我理想的解决方案应该有
public class Timestamp {
@XmlAttribute(name = "ts")
private LocalDateTime timeStampAsLocalDateTime;
@XmlValue
private Double value;
我知道我可以通过以下方式解析字符串:
ZonedDateTime.parse(zonedDateTimeAsString).toLocalDateTime();
但我不确定是否有办法解析这个on fly。
【问题讨论】:
-
在大多数情况下,
LocalDateTime不是时间戳的最佳选择,因为在将其用作时间点之前,您需要在时区或 UTC 偏移量处对其进行解释,这是错误的-容易(充其量)。请考虑Instant或其他本身定义时间点的类。 -
“on Fly”是什么意思?
-
您的
ts字符串应该被解析为OffsetDateTime对象。
标签: java xml jaxb timestamp zoneddatetime