提问人:GDev 提问时间:3/20/2022 更新时间:3/20/2022 访问量:3004
日期格式“dd-MMM-yyyy”为9月,现在是9月。不是 9 月,所以转换导致 nil
Date format "dd-MMM-yyyy" for September now Sept. Not Sep so converting causes nil
问:
将 iPad 更新到 iOS 15.4。
现在,当存储的月份格式“MMM”= Sep时,使用 DateFormatter 的字符串到日期的转换返回 nil。
当MMM月份=9月时工作正常。
在 iOS 15.3 及更早版本中有效。
问题是我已创建日期并将其存储为 dd-Sep-2021。
let dateFormat = "dd-MMM-yyyy"
let dateFormatter = DateFormatter()
dateFormatter.calendar = Calendar(identifier: .iso8601)
dateFormatter.dateFormat = dateFormat
let startDate = dateFormatter.date(from: appStartDate) //Returns nil if “11-Sep-2021” and crashes
print(String(describing: startDate))
对此代码进行了一些调查,发现 Sep 有效,而 Sep 无效。
let x = "-Sep-2021" // This returns nil
//let x = "-Sept-2021" // This works
var z: String = ""
let i = 1...30
for n in i {
z = String(n) + x
guard let y = dateFormatter.date(from: z) else {
print(String(n)) // will print if nil
continue
}
print(\(String(describing: y))) //will print if string converted to date
}
所有其他 3 个字符的月份格式都有效。
知道事情是否发生了变化吗?
答: 暂无答案
评论
Locale
en_US_POSIX
.gregorian
dateFormatter.locale = Locale(identifier: "en_US_POSIX")