iOS 15.4 日期格式"Sep"现在"Sept"



一旦用户选择9月的任何日期,应用程序就会崩溃。这只适用于iOS 15.4。

我有datePicker格式的日期,以UTC格式en_GB返回。

@objc func doneDateClicked() {
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .medium
dateFormatter.timeStyle = .none //CHANGED 09.07.2020 date medium time none
dateFormatter.timeZone = TimeZone(secondsFromGMT: 0)
dateFormatter.timeZone = TimeZone(identifier: "GMT")
dateFormatter.locale = Locale(identifier: "en_GB")
dateFormatter.dateFormat = "dd MMM yyyy"
let timeFormatter = DateFormatter()
timeFormatter.dateStyle = .none
timeFormatter.timeStyle = .medium
timeFormatter.timeZone = TimeZone(secondsFromGMT: 0)
timeFormatter.timeZone = TimeZone(identifier: "GMT")
timeFormatter.locale = Locale(identifier: "en_150")

dateTextField.text = dateFormatter.string(from: (datePicker?.date )!)
self.view.endEditing(true)
}

然后我需要将所选日期从字符串(dateTextField.text(转换为日期在9月份的iOS 15.4上;九月";。

从字符串转换为日期的代码

let formatter = DateFormatter()             
formatter.locale = Locale(identifier: "en_GB")
formatter.dateFormat = "dd MMM yyyy hh:mm:ss"
formatter.calendar = Calendar(identifier: .gregorian)
let datenN = formatter.date(from: "(dateTextField.text ?? "") 00:00:00")

datenN应用程序崩溃,返回nil

我试着使用代码formatter.locale = Locale(identifier: "en_US_POSIX"),但应用程序仍然崩溃

假设这个问题只发生在九月和iOS 15.4上,那么一个快速的变通办法是取代";9月";用";Sep";,使用

dateTextField.text = dateFormatter.string(from: (datePicker?.date )!)
if dateTextField.text.contains("Sept") {
dateTextField.text = dateTextField.text.replacingOccurrences(of: "Sept", with: "Sep")
}

相关内容

  • 没有找到相关文章

最新更新