当前位置: 首页 > 知识库问答 >
问题:

Java语言util。日期未正确转换为Java。时间本地日期

葛智敏
2023-03-14

我正在尝试将java Date转换为java LocalTime,我的代码如下所示

Date memberBirthdayDate = club.getMembers().get(i).getDob();
        System.out.println(memberBirthdayDate);
        LocalDate memberBirthday = memberBirthdayDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();

当我打印对话前后的日期时,看起来是这样的:

Before: Wed May 21 00:00:00 GMT 94
After: 0094-05-18

它看起来像是在向后转换,但我不知道怎么做!

共有2个答案

赫连智
2023-03-14

在你的年龄里似乎有一个bug。您在评论中自己给出了答案:

我通过Excel从csv导入,它自动格式化日期以删除“19”

您所做的转换在1994年的某个日期非常有效:

    System.out.println("Before: " + memberBirthdayDate);
    LocalDate memberBirthday = memberBirthdayDate.toInstant()
            .atZone(ZoneId.systemDefault())
            .toLocalDate();
    System.out.println("After: " + memberBirthday);

输出:

Before: Sat May 21 00:00:00 IST 1994
After: 1994-05-21

我用欧洲/都柏林时间复制了您的精确结果,所以IST是爱尔兰夏季时间。您的日期似乎表示一天的开始时间为格林尼治时间的某个偏移量,因此您需要使用与该偏移量一致的时区。我预计,至少在1900年之后的所有日期,转换都能如期进行,而且可能更早。

然而,当这一年从1994年缩短到94年时,有趣的事情开始发生。很久以前的日期还没有很好的定义<代码>本地日期(code>LocalDate)使用的是前公历,它既实用又定义明确,但与1582年及以后引入公历之前的实际生活中使用的日期不一致。我不确定日期使用了什么。回溯到公元94年,我们不应该对5月21日变成5月18日感到惊讶。

Before: Wed May 21 00:00:00 GMT 94
After: 0094-05-18

链接:维基百科文章公历

祝允晨
2023-03-14

你能做到的

 LocalDateTime memberBirthday = LocalDateTime.ofInstant(memberBirthdayDate.toInstant(), 
ZoneId.systemDefault());
Date out = Date.from(memberBirthday.atZone(ZoneId.systemDefault()).toInstant()); System.out.println(out);
 类似资料:
  • 我正在尝试转换java。util。日期至java。时间本地日期: 但是,当有例如22:25的一天时间时,我选择ZoneId,例如:。 即将推出的本地日期将有不同的日期(因为该区域增加了6小时),例如欧洲/明斯克: 我想在结果的LocalDate中保留与该实例相同的日期。一些方法如何解决这个问题?我想可能有几种方法。

  • 问题内容: 从服务器上,我得到了这种格式的datetime变量:它是UTC时间。我想使用JavaScript将其转换为当前用户的浏览器时间。 如何使用JavaScript或jQuery完成此操作? 问题答案: 在将字符串转换为javascript中的日期之前,将’UTC’附加到字符串中:

  • 我不知道为什么我的代码给我一个空java.util.date. 问题:编写一个测试程序,创建一个帐户ID为1122,余额为20000,年利率为4.5%的帐户对象。使用提款方式提取2500美元,使用存款方式存入3000美元,并打印余额,每月利息,以及创建此帐户的日期 这是我的代码: }

  • 在我的MySQL数据库中,我有一个有三列的表,如下所示 notification_time是时间的数据类型。 在我的Spring-boot应用程序中,为表建模

  • 我有一个简单的JavaLocalDateTime如下: 它的结果是: 我希望是2021年3月23日下午1点17分 我在这里错过了什么?

  • 我在尝试将java.util.Date转换为java.sql.Date时遇到了一些问题。传入的date参数最初是以下格式的字符串:2019-01-31。然后我尝试使用以下代码将其转换为java.util.date: 在我的SQL语句中,我试图将其转换为java。sql。日期: 然而,当我以字符串形式打印出缓冲区时,我意识到日期已更改。例如,我传入的数据字符串是2018-01-01,但在SQL语句中