Swift中来自String的NSDate

时间:2014-11-07 22:45:47

标签: swift nsdate nsdateformatter nscalendar

我有一个字符串(例如,#34; 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.我的日期格式错误了吗?

2 个答案:

答案 0 :(得分:4)

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

这应该有效:

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

答案 1 :(得分:1)

static func convertStringToNSDate(dateStr: String) -> NSDate
{
    let dateFormatter = NSDateFormatter()
    dateFormatter.dateFormat =  "yyyy'-'MM'-'dd HH':'mm':'ss '+0000'"
    let date = dateFormatter.dateFromString(dateStr)

    return date!
}

在我的代码中,我使用该方法将字符串转换为NSDate。您唯一需要做的就是将dateFormat属性更改为您要转换的日期格式。