时区格式的 Java 日期时间(从时区到未知本地)

假面

我想转换: 2018-06-04T21:00:00.000-07:00 到 2018-06-05 这是正确时区的日期(我不知道正确的时区是什么只有这-07:00)。

奥莱VV

当您不知道正确的时区时,这是不可能的。

像您这样的字符串符合 ISO 8601 格式的偏移日期时间,即具有 UTC 偏移量的日期和时间(但没有时区)。所以唯一自然要做的就是将其解析为OffsetDateTime

    String dateTimeString = "2018-03-04T03:45:00.000-07:00";
    OffsetDateTime dateTime = OffsetDateTime.parse(dateTimeString);
    System.out.println(dateTime);

输出:

2018-03-04T03:45-07:00

解析在没有任何显式格式化程序的情况下工作,因为解析 ISO 8601 格式OffsetDateTime的其他日期时间类java.time作为它们的默认值(并且还在它们的toString方法中打印 ISO 8601 )。java.time是现代 Java 日期和时间 API。(我故意选择了与您不同的日期和时间,以便说明我的下一个观点。)

要将其转换为日期,时区至关重要让我们尝试使用三个不同的时区:

    System.out.println(dateTime.atZoneSameInstant(ZoneId.of("Pacific/Apia")).toLocalDate());
    System.out.println(dateTime.atZoneSameInstant(ZoneId.of("Pacific/Pago_Pago")).toLocalDate());
    System.out.println(dateTime.atZoneSameInstant(ZoneId.of("Asia/Kamchatka")).toLocalDate());

输出:

2018-03-05
2018-03-03
2018-03-04

我们有三个不同的日期,3 月 3 日、4 日和 5 日。因为地球上任何地方的日期都不相同。做出你的选择。:-)

可能可以使用 JVM 的时区设置。如果是这样,请ZoneId.systemDefault()用作 的参数atZoneSameInstant()不过,时区设置可以随时从程序的其他部分或在同一 JVM 中运行的其他程序更改。

问题:我可以在 Java 7 中使用 java.time 吗?

是的,java.time只需要至少Java 6

  • 在 Java 8 及更高版本以及新的 Android 设备上(有人告诉我,从 API 级别 26 开始)新的 API 是内置的。
  • 在 Java 6 和 7 中获得 ThreeTen Backport,新类的 backport(ThreeTen for JSR 310,现代 API 首次被描述)。
  • 在(较旧的)Android 上,使用 ThreeTen Backport 的 Android 版本。它被称为 ThreeTenABP。确保从包org.threeten.bp和子包中导入日期和时间类

链接

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

带时区的日期时间格式

来自分类Dev

日期格式时区问题

来自分类Dev

Java的时间:保存日期和时间等时区

来自分类Dev

如何在 Java 中将日期格式化为带有缩写时区的格式?

来自分类Dev

带时区的HIVE日期时间格式

来自分类Dev

以日期时间和时区处理与Java / Postgres的

来自分类Dev

从具体的时区时间格式始终

来自分类Dev

设置碳日期的时区格式

来自分类Dev

Oracle中的时区日期格式

来自分类Dev

以 UTC 格式存储日期/时间,以不同时区显示本地时间和格式

来自分类Dev

等时格式的时区字段

来自分类Dev

hg日志时区格式

来自分类Dev

如何在java.time的模式字符串中格式化带时区的日期?

来自分类Dev

如何将日期转换为ISO格式,但用时区信息代替Java中的“ Z”?

来自分类Dev

获取全球用户的本地时间,并以本地时区格式显示给其他时区用户

来自分类Dev

获取全球用户的本地时间,并以本地时区格式显示给其他时区用户

来自分类Dev

Java:将UTC中的日期转换为本地时区

来自分类Dev

Qt ISODate格式化的日期/时间,包括时区

来自分类Dev

显示带时区的 freemarker 格式时间

来自分类Dev

日期输入:带时区的 ISO 格式

来自分类Dev

以UTC +/-格式获取UTC时区

来自分类Dev

Java中带时区的日期

来自分类Dev

在Java中为所有时区保存日期时间

来自分类Dev

在Java中为所有时区保存日期时间

来自分类Dev

如何在Java 1.6中获得Apache XML-RPC 3.1.3兼容性(ISO日期格式以及时区)

来自分类Dev

如果时区规则更改,则UTC到本地时间的转换将用于以前保存的日期时间

来自分类Dev

将GMT日期时间转换为本地时区日期时间

来自分类Dev

从本地时区转换日期?

来自分类Dev

格式化带时区的日期。格式错误

Related 相关文章

  1. 1

    带时区的日期时间格式

  2. 2

    日期格式时区问题

  3. 3

    Java的时间:保存日期和时间等时区

  4. 4

    如何在 Java 中将日期格式化为带有缩写时区的格式?

  5. 5

    带时区的HIVE日期时间格式

  6. 6

    以日期时间和时区处理与Java / Postgres的

  7. 7

    从具体的时区时间格式始终

  8. 8

    设置碳日期的时区格式

  9. 9

    Oracle中的时区日期格式

  10. 10

    以 UTC 格式存储日期/时间,以不同时区显示本地时间和格式

  11. 11

    等时格式的时区字段

  12. 12

    hg日志时区格式

  13. 13

    如何在java.time的模式字符串中格式化带时区的日期?

  14. 14

    如何将日期转换为ISO格式,但用时区信息代替Java中的“ Z”?

  15. 15

    获取全球用户的本地时间,并以本地时区格式显示给其他时区用户

  16. 16

    获取全球用户的本地时间,并以本地时区格式显示给其他时区用户

  17. 17

    Java:将UTC中的日期转换为本地时区

  18. 18

    Qt ISODate格式化的日期/时间,包括时区

  19. 19

    显示带时区的 freemarker 格式时间

  20. 20

    日期输入:带时区的 ISO 格式

  21. 21

    以UTC +/-格式获取UTC时区

  22. 22

    Java中带时区的日期

  23. 23

    在Java中为所有时区保存日期时间

  24. 24

    在Java中为所有时区保存日期时间

  25. 25

    如何在Java 1.6中获得Apache XML-RPC 3.1.3兼容性(ISO日期格式以及时区)

  26. 26

    如果时区规则更改,则UTC到本地时间的转换将用于以前保存的日期时间

  27. 27

    将GMT日期时间转换为本地时区日期时间

  28. 28

    从本地时区转换日期?

  29. 29

    格式化带时区的日期。格式错误

热门标签

归档