在 swift 中将 NSString 转换为 NSDate

Conversion of NSString to NSDate in swift

我正在尝试将@"4:30 PM"(字符串)转换为 NSDate 格式。我无法做到这一点,而且出现了意想不到的结果。

我的代码

var strDate = "4:30 PM"
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "h:mm a"
let date = dateFormatter.dateFromString(strDate)
print(date)

输出:可选(2000-01-01 11:00:00 +0000)

  1. NSDateFormatter 将 return 一个可选的 NSDate 因为它可能无法解析您的输入。
  2. NSDateFormatter 也将 return 一个 NSDate 对象,它只存储一个原始日期(所以它在 GMT 时区),但是打印它会本地化输出。例如在法国,我处于 ​​GMT+1 时区,因此输出总是比我在 strDate 中输入的多一小时。

要删除可选,请将 date 常量定义为:

let date = dateFormatter.dateFromString(strDate) as NSDate!

要计算您当地时区的时间,请添加

dateFormatter.timeZone = NSTimeZone(name:"UTC")

综上所述,这就是您想要的:

var strDate = "4:30 PM"
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "h:mm a"
dateFormatter.timeZone = NSTimeZone(name:"UTC")
let date = dateFormatter.dateFromString(strDate) as NSDate!
print(date)