0

我开发了一个自定义日程日历,有 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
4

1 回答 1

1

看起来您使用org.joda.time.DateTime的是错误的类来满足此要求。此要求的正确类是org.joda.time.LocalDate.

org.joda.time.LocalTime可用于表示基于人类的日期时间,例如电影时间,或本地图书馆的开放和关闭时间,或创建数字时钟等LocalDateTime。LocalDate 与 LocalTime 的组合可用于表示特定的事件,例如美洲杯挑战者系列赛路易威登杯总决赛的第一场比赛,于 2013 年 8 月 17 日下午 1:10 开始。请注意,这意味着当地时间下午 1:10。(来源

切换到org.joda.time.LocalDate应该可以解决问题。但是,请在Joda-Time 的主页上查看以下通知

Joda-Time 是 Java SE 8 之前 Java 的事实上的标准日期和时间库。现在要求用户迁移到 java.time (JSR-310)。

因此,我建议您切换到现代日期时间 API *您可以从Trail: Date Time了解现代日期时间 API 。


* 出于任何原因,如果您必须坚持使用 Java 6 或 Java 7,则可以使用ThreeTen-Backport,它将大部分java.time功能向后移植到 Java 6 和 7。如果您正在为 Android 项目和 Android API 工作level 仍然不符合 Java-8,请检查Java 8+ APIs available through desugaringHow to use ThreeTenABP in Android Project

于 2021-03-28T14:45:23.890 回答