当前位置: 首页 > 面试题库 >

Java 8时区转换

严峰
2023-03-14
问题内容

在Java 8中,我想将日期时间从UTC转换为ACST(UTC + 9:30)。

输入-> 2014-09-14T17:00:00 + 00:00

输出-> 2014-09-15 02:30:00

String isoDateTime = "2014-09-14T17:00:00+00:00";
LocalDateTime fromIsoDate = LocalDateTime.parse(isoDateTime, DateTimeFormatter.ISO_OFFSET_DATE_TIME);

ZoneOffset offset = ZoneOffset.of("+09:30");
OffsetDateTime acst = OffsetDateTime.of(fromIsoDate, offset);
System.out.println(acst.toString()); // 2014-09-14T17:00+09:30
System.out.println(acst.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME)); // 2014-09-14T17:00:00+09:30

为什么不执行补偿?


问题答案:

尝试:

String isoDateTime = "2014-09-14T17:00:00+00:00";
ZonedDateTime fromIsoDate = ZonedDateTime.parse(isoDateTime);
ZoneOffset offset = ZoneOffset.of("+09:30");
ZonedDateTime acst = fromIsoDate.withZoneSameInstant(offset);

System.out.println("Input:  " + fromIsoDate);
System.out.println("Output: " + acst.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME));

输出:

Input:  2014-09-14T17:00Z
Output: 2014-09-15T02:30:00+09:30

使用 OffsetDateTime

虽然通常最好使用ZonedDateTime上面所示的方法,但是可以使用OffsetDateTime以下方法执行相同的转换:

String isoDateTime = "2014-09-14T17:00:00+00:00";
OffsetDateTime fromIsoDate = OffsetDateTime.parse(isoDateTime);
ZoneOffset offset = ZoneOffset.of("+09:30");
OffsetDateTime acst = fromIsoDate.withOffsetSameInstant(offset);


 类似资料:
  • 问题内容: 我需要在项目中从一个时区转换为另一个时区。 我可以从当前时区转换为另一个时区,但不能从另一个时区转换为另一个时区。 例如,我在印度,并且能够使用;将其分配给日历对象并设置时区,将其从印度转换为美国。 但是,我不能从其他时区到另一个时区执行此操作。例如,我在印度,但是在将时区从美国转换为英国时遇到了麻烦。 问题答案: tl; dr 细节 类未分配时区†,但是其toString实现令人困惑

  • 问题内容: 我得到以下异常而试图转换到。 代码如下: 我上课的方式有问题吗? 根据文档,这应将对象转换为。上面的日期格式是标准日期? 我需要在Joda时间回退吗? 如果有人可以提供一些建议,那就太好了。 问题答案: 要将a转换为a ,提供方法。所以 因此,假设您要使用默认时区,则您的代码应为

  • 问题内容: 谁能建议一种简单的方法来将日期和时间转换为php中的不同时区? 问题答案: 您可以为此使用datetime对象或其函数别名: 编辑评论 但我无法使用此方法,因为当用户从不同位置登录时,我需要在不同时区显示日期 那不是问题。用户登录后,您将确定其时区并将其设置为DateTime对象,如图所示。我在我的一个项目中使用了类似的方法,它的工作原理很吸引人。 在数据库中,我需要获取任何单个时区中

  • 如何在窗口中查看时区转换信息?在窗口中,我只能找到我的时区(在香港)是“中国标准时间”。虽然我注意到在IANA数据库中有“亚洲/Hong_Kong”和过去夏令时的一些规则: 非常感谢任何帮助!

  • 当将同一时间从Sri Jeyawardenepura转换回珀斯时(1/31/2005 11:30 PM),它转换到1/1/2006 3:00 AM。 时区换算为什么会有一个小时的差?

  • 我有一个格式为“2019-04-25T16:34:28-05:00”的字符串。我已经通过模式“yyyy-mm-dd't'hh:mm:ssz”通过joda-time解析了字符串。 它在DateTime中给出的输出是“2019-04-25t15:34:28.000-06:00”。