我正在尝试将Joda LocalDate
转换为Joda LocalDateTime
,因为我正在使用toLocalDateTime(LocalTime.MIDNIGHT)
方法,因为它现在正在运行
例如:对于给定的joda Localdate 2025-02-28
我得到了预期的joda LocalDateTime 2025-02-28T00:00:00.000
,但我担心的是,这种方法在所有情况下都能正常工作。例如during dayLight saving
time zone anomalies
..等..
更新:我对这个问题做了一个小小的研究,这里是
toLocalDateTime(LocalTime time)
Documentation说:将LocalDate对象转换为带LocalTime
的LocalDateTime以填充缺少的字段。
当我使用LocalTime
初始化LocalTime.MIDNIGHT
时,here LocalTime.MIDNIGHT
是一个初始化为new LocalTime(0, 0, 0, 0);
的静态最终字段,您可以看到它是时间使用ISOChronology getInstanceUTC()
将值硬编码为零值,因此我认为我将获得所需的输出而没有任何问题。
答案 0 :(得分:12)
从documentation,我们知道
LocalDate是一个不可变的日期时间类,表示没有时区的日期。
LocalDateTime是一个不可修改的日期时间类,表示没有时区的日期时间。
在内部,LocalDateTime使用基于单毫秒的值来表示本地日期时间。此值仅在内部使用,不会向应用程序公开。
使用年表进行LocalDate的计算。对于所有计算,此年表将在内部设置为在UTC时区。
我们也知道toLocalDateTime
类LocalDate
方法的实现方式与this类似:
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());
}
同时考虑UTC has no Daylight saving time,我们可以得出结论,您不必使用toLocalDateTime
方法来担心夏令时问题或时区异常,因为此方法不会处理时区。