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

Java 时间:不带区域的本地日期时间 [重复]

萧麒
2023-03-14

当我记录这段代码时,我得到了两个输出:

private void meth(Date date) {
    LOG.info(
        date.toInstant()
        .atZone(ZoneId.systemDefault())
        .format(DateTimeFormatter.ISO_DATE_TIME));

    LocalDateTime ldt = LocalDateTime.ofInstant(
        date.toInstant(),
        ZoneId.systemDefault()
    );

    LOG.info(ldt.format(DateTimeFormatter.ISO_DATE_TIME));

}

我得到了这些日志:

2019-04-01 13:13:32.195  INFO --- : 2019-01-01T01:00:00+01:00[Europe/Madrid]
2019-04-01 13:13:32.197  INFO --- : 2019-01-01T01:00:00

ldt是否丢失了其原始时区?

我怎么会在乎呢?

共有2个答案

瞿健
2023-03-14

LocalDateTime是不带时区的日期时间:

https://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html

何楷
2023-03-14

您使用的是不包含时区的 LocalDateTime - 请参阅 API:

ISO-8601日历系统中没有时区的日期时间,例如2007-12-03T10:15:30。

您想改用ZoneDateTime。

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

  • 问题内容: 我正在尝试将一个实例转换为一个实例。 我没有得到编译器错误,但是实例值是错误的。 我认为这不起作用,因为它存储时间而不是。 我正在使用JDK 1.8版。 问题答案: 您的输入实际上是一个。简单地将其解析为a 然后从中获取会更简单。无需担心时区,无需保留某些传统课程(避免并在可能的情况下…)

  • 我正在尝试在中解析这些日期,然后获取表示形式。 我阅读了这个类似的答案,并创建了一个方法来解析上述日期并返回具有所需格式的: 然而,没有一个图案是匹配的。我这里缺少什么? 更新:在这两个日期中,我都收到了字符的异常。

  • 何时何地哪个更可取? 我不知道他们之间到底有什么区别。 来自LocalDateTime的文档 ...时间表示为纳秒精度。例如,值“2007 年 10 月 2 日 13:45.30.123456789”可以存储在 LocalDateTime 中。 我假设LocalDateTime也可以接受纳秒。所以我想,我可以用LocalDateTime替换我的代码,它们被声明为TimeStamp。如果我错了,请纠

  • 目前我有一张包含以下条目的地图, 如何确定当前LocalDateTime是否介于两个时间之间?例如,如果当前时间为,则需要获取值。

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