2016-10-19 1 views
0

String에서 NSDate 객체를 만들려고합니다. 나는 당신이 볼 수 있도록 내 문자열을 하드 코드했습니다. 내 문자열에서 dateFromString을 호출 할 때, 결과는 nil이 될 것이고, nil을 래핑 해제하기 때문에 예외가 발생합니다. 아래 코드를 붙여 넣었습니다.dateFromString은 nil, swift를 제공합니다.

올바른 방법을 알려면 모든 아이디어가 필요하십니까?

대단히 감사합니다!

let dateFormatter = NSDateFormatter() 
    dateFormatter.dateFormat = "dd/MM/yyyy hh:mm" 

    let timeToParse = "19/10/2016 16:10" 

    let date = dateFormatter.dateFromString(timeToParse) 
    //date = nil? 

    dateFormatter.dateFormat = "yyyy/MM/dd hh:mmZZZ" 
    let dateWithUTC = dateFormatter.stringFromDate(date!) 
+0

당신이 입력으로 DD/MM은/년을 지정하고 – CZ54

+0

예 내가 잘못 문자열에 입력 한 해 4 자리 숫자를 제공하지만, 여전히 올해 – Goomey

답변

3

당신은 시간 hh을 공급했지만,이 (최소 2 자리) 1-12시간와 형식을 예상하고있다. 24 시간 형식 (16:..)를 사용하고 있기 때문에, 당신은 예컨대 : 또한

dateFormatter.dateFormat = "dd/MM/yyyy HH:mm" 

대신 지정 HH를 사용해야합니다 :

  • 피할 선택적 항목을 명시 적으로 랩핑 해제 (!)를 사용하여, 사용 예를 들어, 선택적 바인딩 (if let ...)을 대신 사용하고
  • 은 스위프트 3으로 마이그레이션하는 것이 좋습니다. 이제 공식입니다.

예. (스위프트 3)

let dateFormatter = DateFormatter() 
dateFormatter.dateFormat = "dd/MM/yyyy HH:mm" 

let timeToParse = "19/10/2016 16:10" 

if let date = dateFormatter.date(from: timeToParse) { 
    print(date) // 2016-10-19 16:10:00 +0000 
} 
+0

에 4 자리 숫자를 가진 경우 nil을 나에게 준다 오, 그래, 그 트릭을 했어! 정말 고맙습니다 :) – Goomey