2016-10-21 2 views
0

나는 현지 시간대에 대한 UTC 시간을 변환하려고하지만 전혀 변환하지 않는 것 :UTC는 스위프트에서 작동하지 않는 2

let dateFormatter = NSDateFormatter() 
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" 
let date1 = dateFormatter.dateFromString(dateStringFromServer)! 
dateFormatter.timeZone = NSTimeZone.localTimeZone() 
let date2 = dateFormatter.dateFromString(dateStringFromServer)! 

dateStringFromServer은 문자열입니다 UTC 날짜 표현. 그래서 date1이 UTC로, date2가 PDT (내 현지 시간대)가 될 것으로 예상했지만, 둘 다 동일합니다. 내 구문에 문제가 있습니까?

dateStringFromServer: 2016-10-21T05:24:26.000Z 
date1: 2016-10-21 05:24:26 +0000 
date2: 2016-10-21 05:24:26 +0000 

가 어떻게 날짜 2 장치의 로컬 시간대에있을 얻을 수 있습니다 :

이 내가지고있어 무엇인가?

+0

해당 기기에 설정된 현지 시간을 의미합니까? – mat

+0

예 ios 장치의 현지 시간 – Prabhu

+0

date1이 UTC 일 것으로 예상되는 경우 date1에 대해 시간대 포맷터를 사용하십시오. 'dateFormatter.timeZone = NSTimeZone (이름 : "UTC")' – Dhruv

답변

0

당신이 장치에 설정된 시간대로 변환 할 경우이

Swift3

let dateFormatter = DateFormatter() 
    dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" 
    let date1 = dateFormatter.date(from: dateStringFromServer) 
    // return the timeZone of your device i.e. America/Los_angeles 
    let timeZone = TimeZone.autoupdatingCurrent.identifier as String 
    dateFormatter.timeZone = TimeZone(identifier: timeZone) 
    let date2 = dateFormatter.string(from: date1) 

Swift2을 할 수

 let dateFormatter = NSDateFormatter() 
    dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" 
    let date1 = dateFormatter.dateFromString(dateStringFromServer) 
    // return the timeZone of your device i.e. America/Los_angeles 
    let timeZone = NSTimeZone.localTimeZone().name 
    dateFormatter.timeZone = NSTimeZone(name: timeZone) 
    let date2 = dateFormatter.stringFromDate(date1!) 
+0

TimeZone이 스위프트 2에서 인식 된 개체로 보이지 않습니다 ... – Prabhu

+1

오 죄송합니다 ... 신속한 2 ... 신속한 작업이었습니다. 3. 코드를 업데이트 할 예정입니다. – mat

+0

@Prabhu는 업데이트 된 코드를 참조하십시오. 나는 그것이 도움이되기를 바랍니다 – mat

0

당신을 생각하더라도 때문에이 동일합니다 이후에 날짜 포매터의 시간대를 현재 시간대 으로 설정하면 문제가되지 않습니다.

지정되지 않은 경우, 시스템의 시간대가 사용됩니다 : 당신이 날짜 포맷의 시간대를 설정하지 않으면, 자동으로 NSDateFormatter 애플의 문서에 규정 된 시스템 시간대로 설정합니다.

따라서 날짜 형식 지정자의 시간대는 첫 번째 날짜는 암시 적으로, 두 번째 날짜는 명시 적으로 동일하게 설정되므로 두 번째 날짜는 명시 적으로 동일하게 설정되므로 동일한 날짜가 다시 반환됩니다.

+0

하지만 적어도 둘 다 date1과 date2는 PDT로 변환되어야합니다. 둘 다 UTC로 된 이유는 무엇입니까? – Prabhu

관련 문제