我剛剛閱讀了這篇文章,其中詳細說明了在嘗試將給定字串轉換回日期之前需要在格式之前設定語言環境的詳細資訊。
我有以下遵循該格式的代碼,但從字串到日期的轉換似乎仍然回傳,nil盡管在操場上它似乎作業正常。
// originalDate style is the .full style, "Friday, December 10, 2021 at 4:17:04 PM Pacific Standard Time"
let df: DateFormatter = DateFormatter()
df.locale = Locale(identifier: "en_US_POSIX")
df.dateFormat = "MMM d, yyyy" // Sep 12, 2018 format'
let newDate = df.date(from: originalDate)
let newStringDate = df.string(from: newDate!) // throws found nil when unwrapping
什么可能導致這種情況?
編輯 1:我正在使用 SQLite.swift 從 sqlite 資料庫中提取字串型別
uj5u.com熱心網友回復:
回答您的問題(字串到日期為零):從字串轉換為日期時,您必須使用與字串相同的格式。我從您的評論中假設原始日期。你必須像這樣改變你的代碼
let originalDate = "Friday, December 10, 2021 at 4:17:04 PM"
let df: DateFormatter = DateFormatter()
df.locale = Locale(identifier: "en_US_POSIX")
df.dateFormat = "EEEE, MMMM d, yyyy 'at' h:mm:ss a"
let newDate = df.date(from: originalDate)
print(newDate)
如果您再次想要日期字串,那么您可以再次指定您想要的格式。
df.dateFormat = "MMM d, yyyy" // Sep 12, 2018 format'
let newStringDate = df.string(from: newDate!)
print(newStringDate)
注意:如果您嘗試使用列印在控制臺中記錄 newDate 值,有時它會顯示 nil。在這種情況下,您可以在控制臺中嘗試“po newDate”。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/383588.html
