저는 Swift 3에 내 응용 프로그램의 코드를 마이 그 레이션했으며 Swift 2 또는 그 이전 버전에서는 얻지 못했던 DateFormatter (이전의 NSDateFormatter)에서이 문제가 발생했습니다.Swift에서 DateFormatter의 시간대를 변경할 수 없습니다.
문제는, 내가 Date 객체에 문자열을 변환해야하고 그렇게 할 내 코드가 뭔가 같은 점이다
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
let dateStr1 = "2017-02-22"
let date1 = dateFormatter.date(from: dateStr1)
지금이 잘 작동하고 엑스 코드의 놀이터에서 예상대로하지만 난하려고 할 때 내 응용 프로그램에서 실행, 날짜 1
2017-02-21 13:00:00 +0000 즉 과거의 날짜와 나는 1 일
2017-02-22 fyi 수 있어야합니다, 나는 호주에 오전 이 개발을하고 있습니다.
내 응용 프로그램의 UI에서 날짜 문자열을 가져오고 있으며 UI에서 2017-02-22이므로 Swift의 Date (또는 NSDate) 객체에 해당 문자열을 숨겨야합니다.
는나는 운의 DateFormatter의 타임 존 및 로케일을 설정
dateFormatter.timeZone = TimeZone(identifier: TimeZone.current.identifier)
dateFormatter.locale = Locale.init(identifier: Locale.current.identifier)
을 시도하지하지만 여전히있다?
나는 또한 같은 달력 구성 요소에서 날짜를 만드는 시도,
var dateComponents = DateComponents()
var day = "22"
var month = "02"
var year = "2017"
dateComponents.day = Int(day)!
dateComponents.year = Int(year)!
print(TimeZone.current)
dateComponents.timeZone = TimeZone.current
dateComponents.month = Int(month)!
let userCalendar = Calendar.current
let date1 = userCalendar.date(from: dateComponents)
그러나 아직도 일부 살펴 보았다 2017년 2월 21일 대신 2017년 2월 22일의 점점 즉 올바른 날짜를받지 구약 사이
How do you create a swift Date object
Converting date between timezones swift
같은 다른 SO 질문 그녀. 내가 원하는 결과를 얻을 수있는 방법에 대한 아이디어? 이 코드는 Swift 이전에는 완전히 정상적으로 작동했습니다.
질문에 처음 4 줄의 코드에 문제가 있다고 생각하는 이유는 무엇입니까? 괜찮아요. – rmaddy
호주 2 월 22 일 자정은 21 일 (UTC) 13시입니다. 아무 문제가 없습니다. – rmaddy
충분히 공정하게! 문제를보다 분명하게하기 위해 질문을 편집했습니다. – cptdanko