首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Joda LocalDate To LocalDateTime

Joda LocalDate To LocalDateTime
EN

Stack Overflow用户
提问于 2015-03-26 06:32:06
回答 1查看 15.8K关注 0票数 9

我正在尝试将Joda LocalDate转换为Joda LocalDateTime,因为我使用的是toLocalDateTime(LocalTime.MIDNIGHT)方法,到目前为止,它工作得很好--例如:对于给定的joda 2025-02-28,我得到了预期的joda LocalDateTime 2025-02-28T00:00:00.000,但我担心的是,这个方法在所有情况下是否都能正常工作。例如during dayLight saving time zone anomalies..etc.

更新:我对这个问题做了一个小小的研究

toLocalDateTime(LocalTime time) 文档说:将LocalDate对象转换为带有LocalTime的LocalDateTime,以填充缺少的字段。

当我用LocalTime.MIDNIGHT初始化LocalTime时,这里 LocalTime.MIDNIGHT是初始化为new LocalTime(0, 0, 0, 0);的静态最后字段,您可以看到,使用ISOChronology getInstanceUTC()将值硬编码为零值,因此我认为可以在没有任何问题的情况下获得所需的输出。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-26 09:45:07

文档,我们知道

  • LocalDate是一个不可变的datetime类,它表示没有时区的日期()。
  • LocalDateTime是一个不可修改的datetime类,表示没有时区日期时间。
  • 在内部,LocalDateTime使用基于单毫秒的值来表示本地日期时间。此值仅在内部使用,不向应用程序公开。
  • 对LocalDate的计算是使用年表进行的。此年表将在内部设置为UTC时区中的,用于所有计算。

我们还知道LocalDate类的LocalDate方法是像那样实现的。

代码语言:javascript
复制
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没有夏令时间。,我们可以得出结论,使用toLocalDateTime方法您不必担心夏时制问题或时区异常,因为这种方法不处理时区。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29272356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档