java 解组 LocalDateTime
java unmarshall LocalDateTime
这是我的适配器class:
public class LocalDateTimeAdapter extends XmlAdapter<String, LocalDateTime> {
@Override
public LocalDateTime unmarshal(String v) throws Exception {
return new LocalDateTime(v);
}
@Override
public String marshal(LocalDateTime v) throws Exception {
return v.toString();
}
}
这是一个对象-class,我想在其中存储日期:
@XmlAccessorType(XmlAccessType.FIELD)
public class Object {
@XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
private LocalDateTime time;
public LocalDateTime getTime() {
return time;
}
由于某种原因,我无法编译它。说明问题出在return new LocalDateTime(v);
。这是我得到的错误:
Error:(9, 16) java: constructor LocalDateTime in class java.time.LocalDateTime cannot be applied to given types;
required: java.time.LocalDate,java.time.LocalTime
found: java.lang.String
reason: actual and formal argument lists differ in length
和xml部分:
<time type="dateTime">2000-01-01T19:45:00Z</time>
我正在学习 this 示例。
可能您正在使用 Java 8 中的 LocalDateTime
。此 class 没有任何字符串构造函数。
在您所关注的示例中 LocalDateTime
is from JodaTime
。
因此,您可以通过以下方式做到这一点:
导入org.joda.time.LocalDateTime
(你将需要 JodaTime 依赖项)而不是 java.time.LocalDateTime
;
或将 unmarshal
方法更改为如下内容:
@Override
public LocalDateTime unmarshal(String v) throws Exception {
return LocalDateTime.parse(v);
}
您可能需要通知 date time format,因为默认格式为 2011-12-03T10:15:30
,可能是这样:
@Override
public LocalDateTime unmarshal(String v) throws Exception {
return LocalDateTime.parse(v, DateTimeFormatter.ISO_INSTANT);
}
此外,在 java.time.LocalDateTime
toString
中将输出以下 ISO-8601 格式之一:
- uuuu-MM-dd'T'HH:mm
- uuuu-MM-dd'T'HH:mm:ss
- uuuu-MM-dd'T'HH:mm:ss.SSS
- uuuu-MM-dd'T'HH:mm:ss.SSSSSS
- uuuu-MM-dd'T'HH:mm:ss.SSSSSSSSS
这是我的适配器class:
public class LocalDateTimeAdapter extends XmlAdapter<String, LocalDateTime> {
@Override
public LocalDateTime unmarshal(String v) throws Exception {
return new LocalDateTime(v);
}
@Override
public String marshal(LocalDateTime v) throws Exception {
return v.toString();
}
}
这是一个对象-class,我想在其中存储日期:
@XmlAccessorType(XmlAccessType.FIELD)
public class Object {
@XmlJavaTypeAdapter(LocalDateTimeAdapter.class)
private LocalDateTime time;
public LocalDateTime getTime() {
return time;
}
由于某种原因,我无法编译它。说明问题出在return new LocalDateTime(v);
。这是我得到的错误:
Error:(9, 16) java: constructor LocalDateTime in class java.time.LocalDateTime cannot be applied to given types;
required: java.time.LocalDate,java.time.LocalTime
found: java.lang.String
reason: actual and formal argument lists differ in length
和xml部分:
<time type="dateTime">2000-01-01T19:45:00Z</time>
我正在学习 this 示例。
可能您正在使用 Java 8 中的 LocalDateTime
。此 class 没有任何字符串构造函数。
在您所关注的示例中 LocalDateTime
is from JodaTime
。
因此,您可以通过以下方式做到这一点:
导入
org.joda.time.LocalDateTime
(你将需要 JodaTime 依赖项)而不是java.time.LocalDateTime
;或将
unmarshal
方法更改为如下内容:@Override public LocalDateTime unmarshal(String v) throws Exception { return LocalDateTime.parse(v); }
您可能需要通知 date time format,因为默认格式为 2011-12-03T10:15:30
,可能是这样:
@Override
public LocalDateTime unmarshal(String v) throws Exception {
return LocalDateTime.parse(v, DateTimeFormatter.ISO_INSTANT);
}
此外,在 java.time.LocalDateTime
toString
中将输出以下 ISO-8601 格式之一:
- uuuu-MM-dd'T'HH:mm
- uuuu-MM-dd'T'HH:mm:ss
- uuuu-MM-dd'T'HH:mm:ss.SSS
- uuuu-MM-dd'T'HH:mm:ss.SSSSSS
- uuuu-MM-dd'T'HH:mm:ss.SSSSSSSSS