我知道:
仍然最终IMO都可以作为大多数应用程序用例的类型.例如:目前我正在运行一个批处理作业,我需要根据日期计算下一次运行,我很难找到这两种类型之间的优缺点(除了Instant的纳秒级精度优势和时区部分) of LocalDateTime).
您能说出一些应用示例,其中只应使用Instant或LocalDateTime吗?
编辑:注意有关精度和时区的LocalDateTime的误读文档
我有SimpleDateFormat构造函数
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")
Run Code Online (Sandbox Code Playgroud)
我正在解析字符串 "2013-09-29T18:46:19Z".
我读过这里Z表示GMT/UTC时区.但是当我在控制台上打印这个日期时,它会为返回的日期打印IST timezne.
现在我的问题是我的输出是对还是错?
我试图反序列化String到LocalDateTime杰克逊,但它不工作。
我有一个带有LocalDateTime字段的数据类:
@Data
public class Registration {
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd hh:mm:ss")
private LocalDateTime timestamp;
}
Run Code Online (Sandbox Code Playgroud)
我添加了特殊的Jackson数据类型模块:
compile("com.fasterxml.jackson.datatype:jackson-datatype-jsr310")
Run Code Online (Sandbox Code Playgroud)
序列化在以下情况下可以正常工作:
new ObjectMapper().registerModule(new JavaTimeModule()).writeValueAsString(registration);
Run Code Online (Sandbox Code Playgroud)
结果字符串:
{"timestamp":"2018-09-03 10:09:35"}
Run Code Online (Sandbox Code Playgroud)
但是反序列化不适用于:
new ObjectMapper().registerModule(new JavaTimeModule()).readValue(json.traverse(), Registration.class)
Run Code Online (Sandbox Code Playgroud)
作为错误我得到:
Cannot deserialize value of type `java.time.LocalDateTime` from String "2018-09-03 10:09:35":
Failed to deserialize java.time.LocalDateTime:
(java.time.format.DateTimeParseException) Text '2018-09-03 10:09:35' could not be parsed:
Unable to obtain LocalDateTime from TemporalAccessor:
{MinuteOfHour=9, NanoOfSecond=0, SecondOfMinute=35, MicroOfSecond=0, MilliOfSecond=0, HourOfAmPm=10},
ISO resolved to 2018-09-03 of type java.time.format.Parsed
Run Code Online (Sandbox Code Playgroud)
我想念什么?我对序列化有效,但反序列化无效却感到困惑。
MWE …