java - 将 java.util.Date 转换为 org.joda.time.LocalDateTime 时出现问题

标签 java jodatime java.util.date

import org.joda.time.LocalDateTime;
import java.util.Date;

使用这个日期或以下日期都可以:

  • new LocalDateTime(new Date(0,0,1,2,30)) — 1900-01-01T02:30:00.000
  • new LocalDateTime(new Date(111,4,24,19,51)) — 2011-05-24T19:51:00.000

但是对于之前的日期有一些难以理解的地方:

  • new LocalDateTime(new Date(0,0,1,2,29,50)) — 1900-01-01T01:59:50.000
  • new LocalDateTime(new Date(0,0,1)) — 1899-12-31T23:30:00.000
  • new LocalDateTime(new Date(-50,0,1)) — 1849-12-31T23:30:20.000
  • new LocalDateTime(new Date(-116,6,4)) — 1784-07-03T23:30:20.000

谁知道,这是什么,以及如何防止这个问题?

最佳答案

您使用的是哪个时区?看起来你正在处理一个 clock discontinuity ,可能是 1900 年 1 月 1 日凌晨 2 点左右。这意味着本地时钟跳过了一定的时间,正式不存在。它也可能是夏令时的变化。不过,最后 3 行中的一致差异看起来很奇怪 - 也许 Java 的日历和 Joda Time 使用不同版本的时区数据库,并且其中一个缺少更改。

您可以在链接到的站点上检查您的时区是否有变化。

关于java - 将 java.util.Date 转换为 org.joda.time.LocalDateTime 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6113199/

相关文章:

java - 我需要从控制台输入的字符串中删除空格

java - JODATIME 与 System.currentTimeMillis() 在准确性方面

java - 使用joda时间的两个日期之间的秒差?

java - Java 中的 Date.getTime() 在不同的服务器中返回不同的时间

java - java.util.Date和Zoneddatetime有什么区别?

Java Math 问题输出不正确

java - Ebean延迟加载查看资源是否存在

java - 如何继续询问用户输入,直到用户选择退出?

java - joda time plusDays forPattern ("dd/mm/yyyy") 不切换到下个月

java - 将 java.util.Date 转换为字符串