ZonedDateTime 输出在 Android 13 上有所不同

ZonedDateTime output different on Android 13

提问人:Kris B 提问时间:8/1/2023 最后编辑:Kris B 更新时间:8/1/2023 访问量:38

问:

我在不同版本的 Android 上获得了两个不同的日期输出

ZonedDateTime.parse("Mon, 31 Jul 2023 18:57:55 +0000", DateTimeFormatter.RFC_1123_DATE_TIME.withZone(ZoneId.systemDefault())).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));

在 Android 13 上,输出为:

2023-07-31 14:57:55

在 Android 9 和 11 上,输出为:

2023-07-31 18:57:55

如果我记录所有版本返回:美国/New_YorkZoneId.systemDefault()

Android 13 的日期正确无误。但是,如果我使用 a 而不是,那么 Android 13 上也会输出错误的日期。LocalDateTimeZonedDateTime

如果我使用

ZonedDateTime.parse("Mon, 31 Jul 2023 18:57:55 +0000", DateTimeFormatter.ofPattern("EEE, d MMM yyyy HH:mm:ss z").withZone(ZoneId.systemDefault())).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))

更新:我尝试将时区更改为“美国/Los_Angeles”,这是不同日期的结果:

ZonedDateTime dateTime = ZonedDateTime.parse("Tue, 01 Aug 2023 10:00:00 -0000", DateTimeFormatter.RFC_1123_DATE_TIME.withZone(ZoneId.systemDefault())).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));

Android 13: 2023-08-01 03:00:00

Android 11: 2023-08-01 10:00:00

我应该补充一点,我正在将我所有的代码转换为旧代码,而旧代码并没有发生这种情况。java.util.Datejava.time

Android Java 时 区日期时间

评论


答: 暂无答案