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

尤里

在Java 8中,我需要一种以ISO 8601格式从GMT日期时间获取本地日期时间(GMT + 1)的方法。

一个简单的示例:客户将此日期时间发送给我(服务器)"2020-01-11T23:00:00.000Z"当用户从日期选择器中选择2020年1月12日时,客户会将其发送给我。GMT + 1是1月12日,GMT是前一天。

基于上述原因,我知道对于我来说,这个日期不是GMT + 1的2020年1月11日,而是2020年1月12日。

所以我需要这个值 "2020-01-12T00:00:00.000"

准确地说,我不需要用SimpleDateFormat的打印本,但只是隐蔽"2020-01-11T23:00:00.000Z""2020-01-12T00:00:00.000"一个java.util.Date类领域

谢谢。

安德烈亚斯

问题在于源系统采用了纯日期值,但是在午夜添加了时间,然后将其转换为UTC,但是您想要在中使用纯日期值,java.util.Date默认情况下会在您的本地时区打印,即JVM的默认时间。区。

因此,您必须解析该字符串,将值恢复为源系统的时区,并将该本地时间视为您自己的JVM的默认时区中的时间。

您可以这样做,显示所有中间类型:

String sourceStr = "2020-01-11T23:00:00.000Z";
ZoneId sourceTimeZone = ZoneOffset.ofHours(1); // Use real zone of source, e.g. ZoneId.of("Europe/Paris");

// Parse Zulu date string as zoned date/time in source time zone
Instant sourceInstant = Instant.parse(sourceStr);
ZonedDateTime sourceZoned = sourceInstant.atZone(sourceTimeZone);

// Convert to util.Date in local time zone
ZonedDateTime localZoned = sourceZoned.withZoneSameLocal(ZoneId.systemDefault());
Instant localInstant = localZoned.toInstant();
Date localDate = Date.from(localInstant); // <== This is your desired result

// Print value in ISO 8601 format
String localStr = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS").format(localDate);
System.out.println(localStr);

输出量

2020-01-12T00:00:00.000

该代码当然可以合并在一起:

String input = "2020-01-11T23:00:00.000Z";

Date date = Date.from(Instant.parse(input).atZone(ZoneOffset.ofHours(1))
        .withZoneSameLocal(ZoneId.systemDefault()).toInstant());

System.out.println(date);

输出量

Sun Jan 12 00:00:00 EST 2020

如您所见,即使我位于美国东部时区,日期值也是正确的。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将UTC日期时间转换为带有时区的本地日期时间

来自分类Dev

如何将本地日期时间字符串转换为Unix时间戳(GMT)?

来自分类Dev

如何使用不同的时区Nodatime将UTC日期和时间转换为本地时间

来自分类Dev

将所有日期/日期时间元素转换为本地时区

来自分类Dev

将日期时间转换为本地python

来自分类Dev

如何将本地日期时间转换为具有偏移量的GMT

来自分类Dev

R-防止聚合函数将日期时区转换为本地时间?

来自分类Dev

Django 自动将日期时间字符串转换为本地时区

来自分类Dev

将日期和时间转换为GMT格式

来自分类Dev

将GMT格式的字符串转换为日期时间

来自分类Dev

将GMT日期格式转换为仅时间格式

来自分类Dev

将 GMT 日期转换为时间戳

来自分类Dev

将日期时间转换为本地时间的问题

来自分类Dev

如何将UTC日期时间转换为指定的时区?

来自分类Dev

将字符串转换为带时区的日期时间

来自分类Dev

将日期/时间从UTC转换为会话时区

来自分类Dev

VBScript:将日期/时间从命名时区转换为UTC

来自分类Dev

如何将具有当前 GMT 时区的字符串转换为正常日期时间

来自分类Dev

将日期从时区转换为设备本地时区和日期

来自分类Dev

使用时区将日期时间转换为 ISO 8601 日期时间格式

来自分类Dev

考虑到时区的夏时制时间,将UTC日期时间转换为将来的时间

来自分类Dev

将具有不同时区的日期时间转换为特定日期的日期

来自分类Dev

将UTC日期从服务器转换为本地时间

来自分类Dev

将UTC时间戳转换为本地日期

来自分类Dev

将未来的本地日期时间转换为 UTC

来自分类Dev

logstash将时间转换为日期时间

来自分类Dev

将时间戳转换为日期时间

来自分类Dev

在Android中指定GMT格式时,如何将日期和时间从一个时区转换为另一个时区

来自分类Dev

将本地日期/时间转换为UTC日期/时间java SE 8

Related 相关文章

  1. 1

    将UTC日期时间转换为带有时区的本地日期时间

  2. 2

    如何将本地日期时间字符串转换为Unix时间戳(GMT)?

  3. 3

    如何使用不同的时区Nodatime将UTC日期和时间转换为本地时间

  4. 4

    将所有日期/日期时间元素转换为本地时区

  5. 5

    将日期时间转换为本地python

  6. 6

    如何将本地日期时间转换为具有偏移量的GMT

  7. 7

    R-防止聚合函数将日期时区转换为本地时间?

  8. 8

    Django 自动将日期时间字符串转换为本地时区

  9. 9

    将日期和时间转换为GMT格式

  10. 10

    将GMT格式的字符串转换为日期时间

  11. 11

    将GMT日期格式转换为仅时间格式

  12. 12

    将 GMT 日期转换为时间戳

  13. 13

    将日期时间转换为本地时间的问题

  14. 14

    如何将UTC日期时间转换为指定的时区?

  15. 15

    将字符串转换为带时区的日期时间

  16. 16

    将日期/时间从UTC转换为会话时区

  17. 17

    VBScript:将日期/时间从命名时区转换为UTC

  18. 18

    如何将具有当前 GMT 时区的字符串转换为正常日期时间

  19. 19

    将日期从时区转换为设备本地时区和日期

  20. 20

    使用时区将日期时间转换为 ISO 8601 日期时间格式

  21. 21

    考虑到时区的夏时制时间,将UTC日期时间转换为将来的时间

  22. 22

    将具有不同时区的日期时间转换为特定日期的日期

  23. 23

    将UTC日期从服务器转换为本地时间

  24. 24

    将UTC时间戳转换为本地日期

  25. 25

    将未来的本地日期时间转换为 UTC

  26. 26

    logstash将时间转换为日期时间

  27. 27

    将时间戳转换为日期时间

  28. 28

    在Android中指定GMT格式时,如何将日期和时间从一个时区转换为另一个时区

  29. 29

    将本地日期/时间转换为UTC日期/时间java SE 8

热门标签

归档