gpt4 book ai didi

java - UTC 到本地日期转换

转载 作者:行者123 更新时间:2023-11-29 05:08:52 26 4
gpt4 key购买 nike

您好,我有一个表格,我从中得到一个像“2017-03-24 06:01:33”这样的 UTC 日期。在我的 java 程序中,我必须将它作为字符串接收。如何使用客户端的偏移小时和分钟将其转换为本地日期字符串?

最佳答案

我会这样做:

    OffsetDateTime odt = LocalDateTime.parse(dateFromDb, DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss"))
.atOffset(ZoneOffset.UTC);
String localDateString = odt.atZoneSameInstant(ZoneOffset.ofHoursMinutes(5, 30))
.toLocalDateTime()
.toString();

我假设您已将客户的时区作为以小时和分钟为单位的偏移量。然后您可以将它们传递给 ZoneOffset.ofHoursMinutes()。请注意,如果客户时区在一年中的某些时候使用夏令时(夏令时)(美国大部分地区就是这种情况),您需要确保获得日期所在的一年中的时间偏移量.指定客户端时区的其他方法是 ZoneId.systemDefault()ZoneId.of("Asia/Kolkata") — 这样就知道夏令时规则,因此可能更安全。

代码打印:

2017-03-24T11:31:33

您注意到它比预期的输入字符串早了五个半小时。

如果您只需要日期,不需要时间,请使用 toLocalDate() 而不是 toLocalDateTime()

以上所有内容都需要 Java 8。或者将 Java 8 日期和时间类向后移植到 Java 6 和 7,请参阅 ThreeTen Backport .如果您不能使用 Java 8 并且不想依赖向后移植,请在 this question: Not able to parse UTC date time to EST local time 中找到您的灵感.

关于java - UTC 到本地日期转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43045348/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com