swift - Swift 中来自字符串的 NSDate

标签 swift nsdate nsdateformatter nscalendar

我有一个字符串(例如“2014-11-06 16:32:01”) 我想把这个格式变成一个 NSDate 对象。 这是我正在做的:

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
var date = dateFormatter.dateFromString("2014-11-06 16:32:01")!
var myCalendar:NSCalendar = NSCalendar(calendarIdentifier: NSGregorianCalendar)!
var myComponents = myCalendar.components(NSCalendarUnit.WeekdayOrdinalCalendarUnit, fromDate: date)
var year = myComponents.year
var month = myComponents.month
var day = myComponents.day

年、月和日的值分别为 9223372036854775807。我的日期格式有误吗?

最佳答案

日期格式正确。但是你必须在 myCalendar.components(...) 调用。所有其他组件都设置为 NSNotFound 又名 NSIntegerMax, 在 64 位架构上是 2^63 - 1 = 9223372036854775807

这应该有效:

var myComponents = myCalendar.components(.YearCalendarUnit | .MonthCalendarUnit | .DayCalendarUnit, fromDate: date)

关于swift - Swift 中来自字符串的 NSDate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26811370/

相关文章:

swift - Swift 3.0 中用于 NSMutableSet 的 componentsByString

ios - 如何从使用语言环境设置格式化的 NSString timeStyle 获取 NSDate

swift - 如何在每晚 12 点重置变量? swift

ios - 为什么 NSDate 字符串中有一些奇怪的字符

ios - Swift 2 函数补全

swift - 从 iOS 9 中的联系人框架访问电话号码

swift - 获取 Swift 中日期之间剩余的分钟数

ios - 如何将邮件服务器日期字符串转换为 nsdate

ios - 字符串中的 NSDate 显示一个月前的日期

swift - 使用 swift 代码解析类中的指针