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

Java,DateTimeFormatter没有考虑ZoneDateTime的时区[duplicate]

司马腾
2023-03-14

我有一行代码:

// I pass milliseconds timestamp on time var
ZonedDateTime zonedDatetIme = ZonedDateTime.ofInstant(java.time.Instant.ofEpochMilli(time), java.time.ZoneId.of("Asia/Almaty"))

当我这次尝试输出时,它返回:

System.our.println(zonedDatetIme)
// returns
2020-01-24T17:00+06:00[Asia/Almaty]

然后我尝试格式化这个日期时间:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern('dd.MM.yyyy hh:mm');
System.our.println(formatter.format(zonedDateTime));

这让我想起:

24.01.2020 05:00

这是错误的。这就像是在我的时区中减去6个小时,而不是加上它。为什么会这样?

共有1个答案

汪丁雷
2023-03-14

您可能会混淆hh-h是AM/PM意义上的时钟小时(在您的示例中:05:00 PM=17:00),而h是一天中的小时。

 类似资料:
  • 我正在尝试解析具有特定格式的当前时间戳,但每次尝试我都会得到一个。我的代码: 结果: 问题是为什么我不能以所需的格式解析它以及如何实现它? 附言:我也看到了这篇文章,并尝试设置,但没有帮助。

  • 有没有一个时区,我可以使用,以考虑到夏令时?我知道'EDT'是指夏令时,而'EST'不是。是否有一个时区我可以使用,将自动检测日期时间是否是夏令时?“ET”或“America/New_York”能行吗? 编辑:: 抱歉应该更清楚。我想取一个日期并将其转换为东部时区,但我希望它考虑到东部时区的日期是否为夏令时。

  • 下面是DateTimeFormatter API部分: 有人能看出问题出在哪里吗?

  • 不幸的是,我在gradle docs中找不到任何指向我这个问题的东西。非常感谢您的帮助!

  • 我在制作极坐标图时遇到了一些问题。我应该得到一个8字形的图形(我的一些朋友在Origin和Excel中绘制了数据,它确实可以工作),但代码似乎编写不正确。通过查看该图,我看到代码没有考虑我正在编写的角度(θ数组),但我不知道为什么会发生这种情况。我已经尝试了更多的代码,并用弧度来书写角度,但似乎没有任何效果。 我也尝试过:

  • 在java编程中,什么时候需要考虑并发编程来保证线程安全性。还没深入了解这块,在编程时一直很犹豫。