在Swift中将NSString转换为NSDate

3

我想将字符串@"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)


你目前所在的时区是什么?5:50的差异(印度?)你期望什么? - Larme
变量strDate太抽象了。我认为你应该给一个更具体的strDate。 - jinhua liao
其实这是我的需求 :( @jinhua liao - Pallavi Konda
你期望的输出是什么?Optional(2000-01-01 16:30:00 +0000) - sbarow
@Larme 现在是5:30... @-MyiOS 这里没有关于 Swift 的新内容,而且它会给你与 Objective-C 相同的输出。 - TheTiger
显示剩余3条评论
2个回答

3
为了去除可选项,将你的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)

2
  1. NSDateFormatter会返回一个可选的NSDate,因为它可能无法解析您的输入。
  2. NSDateFormatter还将返回一个NSDate对象,该对象仅存储原始日期(因此处于GMT时区),但打印它将本地化输出。例如,在法国,我处于GMT+1时区,因此输出将始终比我在strDate中输入的时间多一个小时。

我需要根据我的时区添加或减去输出吗?@Fantattitude - Pallavi Konda

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接