gpt4 book ai didi

ios - 此日期时间响应的正确格式是什么

转载 作者:行者123 更新时间:2023-11-29 06:02:14 26 4
gpt4 key购买 nike

我尝试使用 codable 将 json 响应解码为模型,但在解析日期时遇到问题。

我在DateFormatter中使用的格式是“yyyy-MM-dd'T'HH:mmZ”和数据示例

{
"startDate": "2019-01-27T00:00:00",
"endDate": "2019-02-02T00:00:00",
"id": null
}, {
"startDate": "2019-01-20T00:00:00",
"endDate": "2019-01-26T00:00:00",
"id": null
}, {
"startDate": "2019-01-13T00:00:00",
"endDate": "2019-01-19T00:00:00",
"id": null
}, {
"startDate": "2019-01-13T00:00:00",
"endDate": "2020-01-19T00:00:00",
"id": null
}, {
"startDate": "2019-01-06T00:00:00",
"endDate": "2019-01-12T00:00:00",
"id": null
}

我还尝试过“yyyy-MM-dd'T'HH:mmZ”“yyyy-MM-dd'T'HH:mm:ssZ” > 和 "yyyy-MM-dd'T'HH:mm:ss.SSSZ",在 T 周围有或没有 '

我得到的错误是

"NSCodingPath": [CodingKeys(stringValue: "result", intValue: nil), _JSONKey(stringValue: "Index 0", intValue: 0), CodingKeys(stringValue: "startDate", intValue: nil)], "NSDebugDescription": "Date string does not match format expected by formatter."

我确信我的格式正确,但这个错误让我怀疑自己的理智。

我从 https://nsdateformatter.com/ 获取了格式

最佳答案

它是yyyy-MM-dd'T'HH:mm:ss。您的字符串有秒(因此包括 :ss),但没有毫秒(即不包括 .SSS),也没有时区限定符(即不包括 Z ,要么)。

对我来说有趣的问题是它应该采用哪个时区。默认情况下,在字符串中缺少时区部分的情况下,DateFormatter 将采用本地时区,即使这些时区很可能是 GMT/UTC/Zulu。如果是这样,请显式设置格式化程序的timeZone。当然,不要忘记设置区域设置

let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.timeZone = TimeZone(secondsFromGMT: 0) // include this only if dates are GMT/UTC/Zulu
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss"
<小时/>

顺便说一句,如果您愿意,您还可以使用 ISO8601DateFormatter,它假定 UTC/GMT,如果您愿意的话:

let formatter = ISO8601DateFormatter()
formatter.formatOptions = [.withFullDate, .withTime, .withColonSeparatorInTime]

而且,在这种情况下,如果您想使用本地时区,则必须指定它:

formatter.timeZone = .current

不幸的是,使用dateDecodingStrategy而无法使用ISO8601DateFormatter。同样,.iso8601 策略假设您将具有时区字符。

因此,对于 Codable 和您的特定字符串,您必须坚持使用上面的 DateFormatter 示例。

关于ios - 此日期时间响应的正确格式是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54525862/

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