rest适当的Java类以UTC时区表示日期
我有一个Spring Boot(Jackson marshalling)REST api应用程序,在该应用程序中,我将把所有日期/时间(时间表的开始时间和结束时间)都视为在UTC时区。我应该在代码中使用什么“合适的”Java类来保存这些日期/时间?我觉得我们应该明确使用OffsetDateTime和内部时区作为UTC,以防我们需要切换时区或打印/记录日期等
想法?为了简单起见,LocalDateTime是否可以使用,因为它们都是UTC
你可以在下面搜索框中键入要查询的问题!
我有一个Spring Boot(Jackson marshalling)REST api应用程序,在该应用程序中,我将把所有日期/时间(时间表的开始时间和结束时间)都视为在UTC时区。我应该在代码中使用什么“合适的”Java类来保存这些日期/时间?我觉得我们应该明确使用OffsetDateTime和内部时区作为UTC,以防我们需要切换时区或打印/记录日期等
想法?为了简单起见,LocalDateTime是否可以使用,因为它们都是UTC
# 1 楼答案
如果选择UTC作为时区中性表示(这是一个很好的想法),我建议从}是一个时间点。从概念上讲,它没有时区。听起来这是一个优势。以后你可以随心所欲地切换时区,你的时间点将保持不变。可以使用UTC中的
java.time
中选择Instant
。{parse
方法(例如2018-12-31T23:37:45.975Z
)从ISO 8601字符串解析Instant
。而且它的toString
产生同样的结果,仍然是UTC如果希望明确表示日期时间是UTC,可以使用带有偏移量,我会认为它是多余的。
ZoneOffset.UTC
的OffsetDateTime
。既然你说你的时代在UTC中总是# 2 楼答案
您需要使用ZonedDateTime。LocalDateTime没有任何区域信息(甚至UTC也没有)
要使用jackson,您需要包括
jsr310
库,用于Java8日期/时间类的自动序列化/反序列化另外,默认情况下
ObjectMapper
在UTC区域解析日期/时间,这对您的情况很有帮助。 jsr310模块将由Spring boot自动注册。如果您想创建自己的ObjectMapper
,您需要使用