Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Joda LocalDate到LocalDateTime_Java_Jodatime - Fatal编程技术网

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 Localdate
2025-02-28
我得到了预期的joda LocalDateTime
2025-02-28T00:00:00.000
,但我担心的是,这种方法是否在所有情况下都能正常工作。例如,夏时制期间的
时区异常

更新:我对这个问题做了一个小调查,在这里

toLocalDateTime(LocalTime)
表示:使用
LocalTime
将LocalDate对象转换为LocalDateTime,以填充缺少的字段

当我用
LocalTime.MIDNIGHT
初始化
LocalTime时,from
LocalTime.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());
}