gpt4 book ai didi

ios - 使用 '(UTC)'(来自 MIME header )解析长格式日期的 NSDateFormatter 格式

转载 作者:行者123 更新时间:2023-11-28 14:53:09 24 4
gpt4 key购买 nike

我正在尝试从旧电子邮件的 MIME header 中解析一些日期:

"Sun, 31 Aug 2008 23:38:35 +0000 (UTC)"

因为有很多不同的,所以我在一个循环中创建日期格式化字符串。不幸的是,这些都没有捕捉到这个,我不知道为什么?

let date = "Sun, 31 Aug 2008 23:38:35 +0000 (UTC)"

extension String {
func toDate() -> Date? {

var date: Date?
let dateFormatter = DateFormatter()
let formats = [
"yyyy-MM-dd HH:mm:ss",
"E, d MMM yyyy HH:mm:ss Z",
"E, d MMM yyyy HH:mm:ss Z (z)",
"E, d MMM yyyy HH:mm:ss",
"yyyy-MM-dd'T'HH:mm:ssZ"
]
formats.forEach { (format) in
dateFormatter.dateFormat = format
if let parsed = dateFormatter.date(from: self) {
date = parsed
} else {
print(":(")
}
}

return date
}
}

date.toDate()

最佳答案

格式 "E, d MMM yyyy HH:mm:ss Z (z)" 适用于 "Sun, 31 Aug 2008 23:38:35 +0000 (UTC)"。但它只有在用户的语言环境设置为英语时才有效。解析固定格式的日期字符串时,请确保将日期格式化程序的语言环境设置为 en_US_POSIX:

dateFormatter.locale = Locale(identifier: "en_US_POSIX")

这不仅可以确保它正确处理英文工作日和月份名称,还可以避免用户在其设备上更改 12/24 小时制时间设置时出现的问题。

关于ios - 使用 '(UTC)'(来自 MIME header )解析长格式日期的 NSDateFormatter 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49635068/

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