在 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)
NSDateFormatter
将 return 一个可选的 NSDate
因为它可能无法解析您的输入。
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)
我正在尝试将@"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)
NSDateFormatter
将 return 一个可选的NSDate
因为它可能无法解析您的输入。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)