Joda LocalDate To LocalDateTime

Sug*_*lai 9 java jodatime

我正在尝试转换Joda LocalDateJoda 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以填充缺少的字段.

当我初始化LocalTimeLocalTime.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方法的时区异常,因为此方法不处理时区.