2014-11-07 3 views
1

문자열이 있습니다 (예 : "2014-11-06 16:32:01") 이 형식을 NSDate 개체로 바꾸고 싶습니다. 월,NSDate from Swift

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.로 평가 내가 잘못 dateformat을 사용할 받고 있습니까 : 여기에 내가 뭘 무엇인가?

+1

예제를 복사하여 얻은 결과는 다음과 같습니다. 2014-11-06 14:32:01 +0000 – Anton

답변

4

날짜 형식이 정확합니다. 하지만 myCalendar.components(...) 호출에서 원하는 모든 유닛을 지정해야합니다. 다른 모든 구성 요소는 NSNotFound (NSIntegerMax, )이며, 이는 64 비트 아키텍처에서 2^63 - 1 = 9223372036854775807입니다.

이 작동합니다 : 그 방법을 사용하고 내 코드에

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

이로 인해 단위가 부여되었습니다. 연도 = 4; 월 = -140590335715296; 일 = -36028797018959872; –

+0

@DaveAlton : 이상하다. 코드를 게시하기 전에 코드를 테스트했다. 'println (date)'는 무엇을 보여줍니까? 년/월/일을 어떻게 인쇄 했습니까? –

+0

어떤 이유인지 println (날짜)가 작동하지 않습니다. 중단 점을 설정하여 값을 얻고 있습니다. –

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 속성을 변환하려는 날짜 형식과 동일하게 변경하는 것입니다.