Joda LocalDate To LocalDateTime

时间:2015-03-26 06:32:06

标签: java jodatime

我正在尝试将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()将值硬编码为零值,因此我认为我将获得所需的输出而没有任何问题。

1 个答案:

答案 0 :(得分:12)

documentation,我们知道

  
      
  • LocalDate是一个不可变的日期时间类,表示没有时区的日期

  •   
  • LocalDateTime是一个不可修改的日期时间类,表示没有时区的日期时间

  •   
  • 在内部,LocalDateTime使用基于单毫秒的值来表示本地日期时间。此值仅在内部使用,不会向应用程序公开。

  •   
  • 使用年表进行LocalDate的计算。对于所有计算,此年表将在内部设置为在UTC时区

  •   

我们也知道toLocalDateTimeLocalDate方法的实现方式与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方法来担心夏令时问题或时区异常,因为此方法不会处理时区。