2017-10-16 10 views
0

따라서 현재 다음과 같은 확장자를 반환하는 Formatter에 대해 다음과 같이 반환합니다. 16/10/17 08:37:50 GMT이지만 16/10/17 08:37:50 PM UTC이 필요합니다. nsdate에 추가 된 UTC. 어떻게하면 될까요? 여기NSDate에 UTC를 추가하는 방법

extension Formatter { 
static let iso8601: DateFormatter = { 
    let formatter = DateFormatter() 
    formatter.calendar = Calendar(identifier: .iso8601) 
    formatter.locale = Locale(identifier: "en_US_POSIX") 
    formatter.timeZone = NSTimeZone(abbreviation:"UTC") as TimeZone! 
    formatter.amSymbol = "AM" 
    formatter.pmSymbol = "PM" 
    formatter.dateFormat = "dd/MM/yy hh:mm:ss a zzz" 
    return formatter 
}() 
} 
+0

그래서 UTC 시간대를 설정하는 이유는 무엇입니까? 다른 끝만 원한다면 문자열을 편집하십시오. –

+0

잘 시도했으나 작동하지 않습니다. formatter.dateFormat = "dd/MM/yy hh : mm : ss UTC". 사실 그것이 나에게 "16/10/17 08:37:50 PM 2017" – lifemoveson

+0

당신이 당신의 데이트를 얻을 때 그것을 편집하십시오 –

답변

2

그냥 형식 문자열에 zzz 대신에 'UTC'을 사용하도록 날짜 포맷을 변경 : 당신은 작은 따옴표로 UTC 같은 문자열 리터럴을 둘 필요가

formatter.dateFormat = "dd/MM/yy hh:mm:ss a 'UTC'" 

그들이 그렇게 형식 문자로 해석되지 않습니다.

위의 내용은 날짜 형식을 UTC 표준 시간대로 설정하면 만 올바르게 작동합니다. 다른 시간대로 설정하면 출력 문자열은 여전히 ​​UTC으로 끝나며 이는 잘못된 것입니다.

+0

나는 그것이 문제가 될 것이라고 생각하지 않습니다. 그걸로 생성되고 서버로 보내진 모든 문자열은 유효 할 것입니다 –

+0

@LeoDabus 사실, 포맷터가 날짜 문자열을 날짜로 다시 변환하지 않습니까? 그것은 상관없이 UTC를 가정 할 것이지만 작동해야합니다. –

+0

내가 말했듯이 문자열이 전달되는 한 UTC 시간이어야합니다. 그리고 함께 생성 된 날짜 문자열도 괜찮습니다. –

0

내가 같은 시간과 날짜 만 시간대 변경 사항을 저장하려면 현재 날짜를 변경 해요 : 다음

내 코드입니다. 이 작동한다면, 시도 당신

var now: Date { 
    let formatter = DateFormatter() 
    formatter.dateFormat = Const.dateFormat 
    formatter.timeZone = TimeZone.current 
    let date = Date() 

    let dateFormatter = DateFormatter() 
    dateFormatter.calendar = Calendar(identifier: .iso8601) 
    dateFormatter.locale = Locale(identifier: "en_US_POSIX") 
    dateFormatter.dateFormat = "dd/MM/yy hh:mm:ss a zzz" 
    dateFormatter.timeZone = TimeZone(abbreviation: "UTC") 
    let str = dateFormatter.string(from: date) 
    return formatter.date(from: str) 
}