我正在尝试转换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..etc ..
更新:我对这个问题做了一个小小的研究,就在这里
toLocalDateTime(LocalTime time) 文档说明:将LocalDate对象转换为LocalDateTime LocalTime以填充缺少的字段.
当我初始化LocalTime时LocalTime.MIDNIGHT,从这里开始 LocalTime.MIDNIGHT是一个静态的最终字段new LocalTime(0, 0, 0, 0);,你可以看到它是一个时间值硬编码到零值ISOChronology getInstanceUTC(),所以我想我会得到所需的输出没有任何问题.
Ort*_*kni 12
从文档中我们知道
LocalDate是一个不可变的日期时间类,表示没有时区的日期.
LocalDateTime是一个不可修改的日期时间类,表示没有时区的日期时间.
在内部,LocalDateTime使用基于单个毫秒的值来表示本地日期时间.此值仅在内部使用,不会向应用程序公开.
LocalDate的计算使用年表进行.此年表将在内部设置为所有计算的UTC时区.
我们也知道,toLocalDateTime方法LocalDate类等来实现此:
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());
}
Run Code Online (Sandbox Code Playgroud)
考虑到UTC没有夏令时,我们可以得出结论,您不必担心夏令时问题,也不必担心使用该toLocalDateTime方法的时区异常,因为此方法不处理时区.