这是我的适配器类:
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();
}
}
这是一个我想存储日期的对象类:
@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 http://blog.bdoughan.com/2011/05/jaxb-and-joda-time-dates-and-times.html例子。
可能你正在使用LocalDateTime https://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html从 Java 8 开始。此类没有任何字符串构造函数。
在您正在关注的示例中LocalDateTime http://www.joda.org/joda-time/apidocs/org/joda/time/class-use/LocalDateTime.html来自JodaTime http://www.joda.org/joda-time/.
因此,您可以通过以下方式做到这一点:
您可能需要通知日期时间格式 https://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html#parse-java.lang.CharSequence-java.time.format.DateTimeFormatter-,因为默认格式是2011-12-03T10:15:30
,也许是这个:
@Override
public LocalDateTime unmarshal(String v) throws Exception {
return LocalDateTime.parse(v, DateTimeFormatter.ISO_INSTANT);
}
另外,在java.time.LocalDateTime
toString https://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html#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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)