我们有一个要求,其中日期时间数据以 UTC 格式存储在 DB 中。但 UI 要求是以 PST 格式显示。
因此我们需要在 Java Spring 中构建 API 数据的同时操作数据。
来自 DB 的数据采用以下格式:"2020-11-16T11:13:46"
[This is UTC]
我尝试了以下解决方案,但出现错误。
private LocalDateTime convertUtcToPst(LocalDateTime timeStamp) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("YYYY-MM-dd HH:mm:ss" );
LocalDateTime ldt = LocalDateTime.parse(timeStamp, formatter);
ZoneId zoneId = ZoneId.of("America/Los_Angeles" );
ZonedDateTime zdt = ldt.atZone(zoneId );
return zdt;
}
有人可以帮我解决这个问题吗? 如果你查看 return 语句,它也显示了一个错误。
答案 0 :(得分:2)
首先在时间戳中添加UTC,
然后转换它
ZonedDateTime zoned = timestamp.atZone(ZoneId.of("UTC"));
ZonedDateTime converted = zoned.withZoneSameInstant(
ZoneId.of("America/Los_Angeles"));
应用 toLocalDateTime()
获取没有区域信息的日期时间。
注意:formaters 用于将对象(~二进制)转换为字符串,反之亦然,即 format()
(类似 toString()
)用于创建一个 String
表示那个物体; parse()
则相反,尝试从给定的 String
创建一个对象。
答案 1 :(得分:1)
你为什么使用格式化程序?您已经有一个 LocalDateTime
private LocalDateTime convertUtcToPst(LocalDateTime timeStamp) {
ZoneId zoneId = ZoneId.of("America/Los_Angeles" );
ZonedDateTime zdt = timeStamp.atZone(zoneId );
return zdt;
}