Java Joda LocalDate到LocalDateTime
我正在尝试将Java Joda LocalDate到LocalDateTime,java,jodatime,Java,Jodatime,我正在尝试将Joda LocalDate转换为Joda LocalDateTime,因为我使用的方法是toLocalDateTime(LocalTime.MIDNIGHT),到目前为止它正在工作 例如:对于给定的joda Localdate2025-02-28我得到了预期的joda LocalDateTime2025-02-28T00:00:00.000,但我担心的是,这种方法是否在所有情况下都能正常工作。例如,夏时制期间的时区异常等 更新:我对这个问题做了一个小调查,在这里 toLocalDa
Joda LocalDate
转换为Joda LocalDateTime
,因为我使用的方法是toLocalDateTime(LocalTime.MIDNIGHT)
,到目前为止它正在工作
例如:对于给定的joda Localdate2025-02-28
我得到了预期的joda LocalDateTime2025-02-28T00:00:00.000
,但我担心的是,这种方法是否在所有情况下都能正常工作。例如,夏时制期间的时区异常
等
更新:我对这个问题做了一个小调查,在这里
toLocalDateTime(LocalTime)
表示:使用LocalTime
将LocalDate对象转换为LocalDateTime,以填充缺少的字段
当我用LocalTime.MIDNIGHT
初始化LocalTime时,fromLocalTime.MIDNIGHT
是初始化为新LocalTime(0,0,0,0)的静态最终字段代码>,您可以看到它是一个时间值硬编码到零值,使用等时getInstanceUTC()
,因此我认为我将获得所需的输出,而不会出现任何问题。从中,我们知道
- LocalDate是一个不可变的datetime类,表示没有时区的日期
- LocalDateTime是一个不可修改的datetime类,表示不带时区的日期时间
- 在内部,LocalDateTime使用一个基于毫秒的值来表示本地日期时间。此值仅在内部使用,不向应用程序公开
- LocalDate上的计算是使用年表执行的。对于所有计算,该年表将在UTC时区内部设置为
我们还知道,LocalDate
类的toLocalDateTime
方法实现如下:
考虑到这一点,我们可以得出结论,使用toLocalDateTime
方法,您不必担心夏令时问题或时区异常,因为该方法不处理时区。您似乎在问Joda库中是否可能存在错误。我想任何事情都是可能的,但我要说的是,它的测试可能比你可能为自己编写的任何东西都要好得多。仅供参考,项目现在已经开始,团队建议迁移到类中。看java.time.LocalDate.parse(“2025-02-28”).atStartOfDay()
public LocalDateTime toLocalDateTime(LocalTime time) {
if (time == null) {
throw new IllegalArgumentException("The time must not be null");
}
if (getChronology() != time.getChronology()) {
throw new IllegalArgumentException("The chronology of the time does not match");
}
long localMillis = getLocalMillis() + time.getLocalMillis();
return new LocalDateTime(localMillis, getChronology());
}