我在快速將字串轉換為日期時遇到問題,也許這很明顯,但我不明白。
我正在嘗試將“2022 年 1 月 18 日 04:39PM GMT”這個字串轉換為日期。我的代碼如下所示:
let str = "Jan 18, 2022 04:39PM GMT"
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "MMM d, YYYY hh:mma z"
let date = dateFormatter.date(from: str)
print(date)
控制臺顯示:可選(2021-12-19 16:39:00 0000)
知道這個格式化程式有什么問題嗎?
uj5u.com熱心網友回復:
除了日期顯示為可選之外,您的格式字串似乎是錯誤的。“YYYY”應該是“yyyy”,所以分配格式化程式的整行應該是:
dateFormatter.dateFormat = "MMM d, yyyy hh:mma z"
這種變化產生了輸出
“可選(2022-01-18 16:39:00 0000)”
此外,您應該真正強制日歷為公歷或 iso8601,并將其語言環境設定為"en_US_POSIX:
日期格式化程式的改進版本可能如下所示:
(來自 Leo 的編輯。)
let str = "Jan 18, 2022 04:39PM GMT"
let dateFormatter = DateFormatter()
dateFormatter.calendar = .init(identifier: .iso8601)
dateFormatter.locale = .init(identifier: "en_US_POSIX")
dateFormatter.timeZone = TimeZone(secondsFromGMT: 0)
dateFormatter.dateFormat = "MMM d, yyyy hh:mma z"
if let date = dateFormatter.date(from: str) {
let dateString = dateFormatter.string(from: date)
print(dateString == str) // true
}
uj5u.com熱心網友回復:
為轉換日期撰寫的代碼是正確的,轉換日期也是正確的。但最終結果是可選的,因此您得到的日期類似于 Optional(2021-12-19 16:39:00 0000)。日期格式化程式也是錯誤的。因此,請打開日期以獲取實際日期,無需選擇。
dateFormatter.dateFormat = "MMM d, yyyy hh:mma z"
guard let convertedDate = date else {
return
}
print(convertedDate)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/414498.html
標籤:
上一篇:每次上傳csv檔案時如何更新mysql資料庫表-這里的問題是我無法更新“日期列”
下一篇:PHPCarbon專用日期格式
