提问人:Александр Волошиновский 提问时间:3/25/2021 最后编辑:Arvind Kumar AvinashАлександр Волошиновский 更新时间:3/28/2021 访问量:494
JodaTime 和夏令时
JodaTime and Daylight saving time
问:
我开发了一个自定义的日程安排日历,间隔 30 分钟,所以当我通过添加 30 分钟来解决这个问题时:
date = date.plusMinutes(minuteStep)
因此,当我们的时区切换到夏令时时,jodatime 将当前时间增加了 1 小时,在这种情况下,我的日程安排被打破了,是否可以排除此偏移量?谢谢
例:
2021-03-28T00:00:00.000+02:00
2021-03-28T00:30:00.000+02:00
2021-03-28T01:00:00.000+02:00
2021-03-28T01:30:00.000+02:00
就在这之后,我得到了:
2021-03-28T03:00:00.000+03:00
答:
看起来您正在使用此要求的错误类。满足此要求的正确类是 。org.joda.time.DateTime
org.joda.time.LocalDate
org.joda.time.LocalTime
可用于表示基于人类的日期时间,例如电影时间,或本地图书馆的打开和关闭时间,或创建数字时钟等。 LocalDate 与 LocalTime 的组合可用于表示特定事件,例如美洲杯挑战者系列赛中路易威登杯决赛的第一场比赛, 它于 2013 年 8 月 17 日下午 1 点 10 分开始。请注意,这意味着当地时间下午 1:10。(来源LocalDateTime
)
切换到应该可以解决问题。但是,请在Joda-Time的主页上查看以下通知org.joda.time.LocalDate
Joda-Time 是 Java 事实上的标准日期和时间库 Java SE 8 之前的版本。现在要求用户迁移到 java.time (JSR-310)。
因此,我建议您切换到现代日期时间 API* 。您可以从 Trail: Date Time 中了解新式日期时间 API。
* 无论出于何种原因,如果你必须坚持使用 Java 6 或 Java 7,你可以使用 ThreeTen-Backport,它将大部分 java.time 功能向后移植到 Java 6 和 7。如果您正在为 Android 项目工作,并且您的 Android API 级别仍然不符合 Java-8,请查看通过脱糖提供的 Java 8+ API 和如何在 Android 项目中使用 ThreeTenABP。
评论
java.time.LocalDateTime
java.time.LocalDateTime
org.joda.time.LocalDateTime