如何将特定字符串“05-Jan-2022 12:05 AM”格式化为 Swift 中的日期对象?

How can I format a specific string "05-Jan-2022 12:05 AM" to a date object in Swift?

我试过使用这段代码,在 playground 中运行良好,但在实际项目中崩溃了。

let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "dd-MMM-yyyy HH:mm a"
    
    let dates = [
        "05-Jan-2022 12:00 AM",
        "11-Nov-2021 12:00 AM",
        "11-Nov-2021 12:00 AM",
        "08-Oct-2021 03:04 PM",
        "08-Oct-2021 12:00 AM",
        "30-Sep-2021 03:48 PM"
    ]
    
    dates.forEach { date in
        print(dateFormatter.date(from: date)!)
    }

两个问题:

  • 您必须将语言环境设置为固定 en_US_POSIX

  • 12 小时格式为 hh

    let dateFormatter = DateFormatter()
    dateFormatter.locale = Locale(identifier: "en_US_POSIX")
    dateFormatter.dateFormat = "dd-MMM-yyyy hh:mm a"