我想決議一個yyyyMMdd格式化的日期。
let strategy = Date.ParseStrategy(
format: "\(year: .defaultDigits)\(month: .twoDigits)\(day: .twoDigits)",
locale: Locale(identifier: "fr_FR"),
timeZone: TimeZone(abbreviation: "UTC")!)
let date = try? Date("20220412", strategy: strategy) // nil :(
有什么問題strategy?
uj5u.com熱心網友回復:
問題是.defaultDigits不適用于.year這種日期格式,原因很可能是因為格式不包含分隔符,因此決議器無法自動推斷年份部分使用的位數。
如果我們嘗試使用分隔符,它將正常作業。例如 yyyy-MM-dd
let strategy = Date.ParseStrategy(
format: "\(year: .defaultDigits)-\(month: .twoDigits)-\(day: .twoDigits)",
locale: Locale(identifier: "fr_FR"),
timeZone: TimeZone(abbreviation: "UTC")!)
if let date = try? Date("2022-04-12", strategy: strategy) { print(date) }
印刷
2022-04-12 00:00:00 0000
沒有分隔符的格式的解決方案是明確告訴策略年份部分包含多少位使用.padded(另一個選項是.extended(minimumLength:))
let strategy = Date.ParseStrategy(
format: "\(year: .padded(4))\(month: .twoDigits)\(day: .twoDigits)",
locale: Locale(identifier: "fr_FR"),
timeZone: TimeZone(abbreviation: "UTC")!)
if let date = try? Date("20220412", strategy: strategy) { print(date) }
再次列印
2022-04-12 00:00:00 0000
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/461361.html
上一篇:ParseSwift:如何宣告一個[String:Any]?ParseObject的屬性?
下一篇:在檔案中的行中添加引號和逗號
