2017-01-22 6 views
1

필자는 Fitbit API에서 돌아온 날짜 문자열을 iOS의 NSDate/Date 객체로 변환하는 방법을 알지 못합니다.Fitbit API에서 오는 파싱 날짜 문자열

2017-01-21T10:39:43.000 

내가 사용 API는 여기에 설명되어 있습니다 :

날짜 문자열의 형식은 다음과 https://dev.fitbit.com/docs/devices/를, 각 장치는 JSON에서 "lastSyncTime"속성으로 돌아옵니다.

날짜에 대해 nil 값을 계속 반환하는 여러 다른 날짜 형식을 시도했습니다.

  let formatter = DateFormatter() 
//  formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ" 
//  formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss'Z'" 
//  formatter.dateFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'Z'" 
//  formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssz" 
//  formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSz" 
     formatter.dateFormat = "yyyy-MM-dd" 
     let date = formatter.date(from: lastSyncTime) 

나는이 모든 다른 날짜 형식을 사용하지 않으려 고 노력했습니다.

모든 도움을 주시면 감사하겠습니다. 감사.

+1

가끔뿐만 아니라 날짜 포맷터 투쟁. 제안 : 후보 포맷터를 사용하여 날짜 **를 ** 문자열로 변환하고 결과를 기록하는 데 사용하십시오. 원하는 형식과 비교하십시오. 그것은 당신이 differnces에 0을 도울 수 있습니다. –

답변

2

이 포맷터를 사용하여 구문 분석하십시오.

let formatter = DateFormatter() 
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS" 
formatter.date(from: dateString) 

나는이 이것은 나를 위해 작동

+0

붐! 그게 하나야! 고맙습니다 :) – cgossain

+0

이것은 사용자의 현지 시간대에있는 날짜 문자열을 해석합니다.이 날짜 문자열은 API에 대해 정확하거나 올바르지 않을 수 있습니다. – rmaddy

+0

"2017-01-21T10 : 39 : 43.000 "위에 주어진 시간에는 시간대 값이 있다고 생각하지 않습니다. – Sandeep

1

도움이되기를 바랍니다 :

import Foundation 

let date = "2017-01-21T10:39:43.000" 
let formatter = DateFormatter() 

formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS" 
let formatDate = formatter.date(from: date) 

print(formatDate!) 

출력 :2017-01-21 16:39:43 +0000