12 小时格式时间字符串中的日期时间不正确 - Swift

Incorrect time in Date from 12-Hr format Time String - Swift

我有以下字符串作为 12 小时格式时间:

let timeFrom = "05:30 AM";
let timeTo = "04:35 PM";

并尝试从中获取日期以进行比较,如下所示:

let openTime = timeFrom.date(format: "hh:mm a")
let closeTime = timeTo.date(format: "hh:mm a")

有了这个扩展:

extension String
{
    func date(format:String) -> Date?
    {
        let formatter = DateFormatter()
        formatter.dateFormat = format
        formatter.timeZone = NSTimeZone.local
        return formatter .date(from: self)
    }
}

当我打印 openTime 和 closeTime 时,我得到的时间值不正确:

print(openTime)      // 2000-01-01 00:00:00 +0000
print(closeTime)     // 2000-01-01 11:00:00 +0000

为什么会这样?我认为它与时区有关,所以我访问了 ,但对我没有任何帮助。如果有人有解决方案,请帮助我。谢谢!

我检查了 swift 3 和 Xcode 8 并做了一些小改动,它的工作请检查

 let timeFrom = "05:30 AM";
 let timeTo = "04:35 PM";
 let openTime = timeFrom.date(format: "hh:mm a")
 let closeTime = timeTo.date(format: "hh:mm a")

 print(openTime)
 print(closeTime)

并更改扩展名

extension String{
func date(format:String) -> Date?
{
    let formatter = DateFormatter()
    formatter.timeZone = NSTimeZone(abbreviation: "GMT+0:00") as TimeZone!
    formatter.dateFormat = format
    //formatter.timeZone = NSTimeZone.local
    return formatter .date(from: self)
}}