Swift ISO8601DateFormatter 在打印 GMT 日期时不写入 UTC 偏移量

问题描述 投票:0回答:1

我正在尝试打印日期和时间,我希望

String
表示包含 UTC 偏移量。 这似乎适用于 BST 时区的日期和时间,但是当日期和时间位于 GMT 时区时,
String
不包含偏移量,而是包含“Z”。

我使用的代码是:

let formatter = ISO8601DateFormatter()
formatter.timeZone = TimeZone(identifier: timeZone). // timeZone = "Europe/London"
formatter.formatOptions = [.withInternetDateTime, .withTimeZone]
formatter.string(from: date). // date is a Date object

输出如下:

2023-10-16T10:00:00+01:00
获取 BST 日期和时间。
2023-11-01T20:42:59Z
GMT 日期和时间

有没有办法让 GMT 日期和时间看起来像

2023-11-01T20:42:59+00:00

swift timezone-offset dateformatter
1个回答
0
投票

来自 ISO 8601 的维基百科页面:

如果时间是 UTC,则在时间后面直接添加 Z,不加空格。 Z 是零 UTC 偏移的区域指示符。

因此输出显然是正确的,因为 GMT 是零偏移的时区

© www.soinside.com 2019 - 2024. All rights reserved.