使用Joda PersistentDateTime持久保存所提供的时区

时间:2017-09-01 11:01:14

标签: java datetime annotations timezone jodatime

我有一个场景,我需要存储时区的日期时间,而不是转换为本地时区。

例如,我在Europe/Berlin时区和America/New_York时区获取日期。如果我的JVM在柏林,则America/New_York的日期时间将转换为柏林时区。

我正在使用弹簧注释:

@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentDateTime")

我知道这会将提供的日期时间转换为在localdatetime中保留。但是如何避免这种情况并将日期时间存储在任何时区。还有其他类型的功能吗?

1 个答案:

答案 0 :(得分:0)

这里有三个选项:

  • PersistentDateTimeAndZone - 将DateTime保留在两个单独的列中 - 一个用于时间戳(时区的本地时间区域)和一个时区ID
  • PersistentDateTimeAndZoneWithOffset - 与上述相同,但时区列将保留时区偏移量
  • PersistentDateTimeAsUtcString - 将所有内容放在一列中,如下所示:
      

    将DateTime保持为由三部分组成的字符串:

         
        
    • 将DateTime转换为UTC时间,格式如下:yyyy-MM-dd'T'HH:mm:ss.SSS
    •   
    • 下划线符号(_
    •   
    • DateTime的原始时区的ID(例如Europe/LondonUTC
    •