배경
"HH : mm"형식의 시간 문자열을 UTC에서 로컬 시간대로 변환해야합니다. 예를 들어, UTC 시간이 09:00 인 경우 현지 시간 (스톡홀름/유럽)은 2 시간 전이어야합니다. 나는 스톡홀름/유럽 시간 09:00 (UTC)를 변환 할 때UTC에서 현지 시간대로 변환 할 때 잘못된 결과가 나타납니다.
문제
I 10:00를 얻을. 11 시가되어야합니다.
func UTCToLocal(date:String) -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "HH:mm"
dateFormatter.timeZone = TimeZone(abbreviation: "UTC")
let dt = dateFormatter.date(from: date)
dateFormatter.timeZone = TimeZone.current //Stockholm/Europe
return dateFormatter.string(from: dt!)
}
print(UTCToLocal(date: "09:00")) //prints 10:00
왜 시간대가 다른 것입니까?
인쇄'dt'을 설정합니다. 질문을 출력으로 업데이트하십시오. 대부분 문제가 발생한 이전 날짜 일 가능성이 큽니다. – rmaddy
관련이 없지만 'dateFormat'을 같은 형식으로 두 번 설정하는 이유는 무엇입니까? 그리고 왜'date'에 문자열 보간을 사용합니까? 그냥'let dt = dateFormatter.date (from : date)' – rmaddy