1
UIDatePicker(timePicker)からNSDateを取得してユーザタイムゾーンに変換しますが、サマータイムであるため1時間はオフになります。NSDateにDayLightSavingTimeを適用します
私はユーザーがサマータイムにいるかどうかをチェックしようとしました。はいの場合、NSDate/dateInUserTimezoneに時間を追加する必要があります。
どうすればこの問題を解決できますか?
func convertTimeZone() ->NSDate {
var date = timePicker.date
print(date)
var formatter = NSDateFormatter()
let timeZone = NSTimeZone(abbreviation: userTimeZone())
formatter.timeZone = timeZone
formatter.dateFormat = "HH:mm:ss"
var isDaylightSavingTime: Bool {
return NSTimeZone.localTimeZone().daylightSavingTime
}
print(isDaylightSavingTime)
var daylightSavingTimeOffset: NSTimeInterval {
return NSTimeZone.localTimeZone().daylightSavingTimeOffset
}
let dateInUserTimezone = formatter.dateFromString(formatter.stringFromDate(date))
return dateInUserTimezone!
}
func userTimeZone() -> String {
return NSTimeZone.localTimeZone().abbreviation ?? ""
}
私の方法では、タイムゾーンが正しく動作します。 DayLightSavingTimeのため1時間だけです。そして私はこれをどのように適用できるのだろうかと思っています。 – R3ptor
どのタイムゾーンを変換していますか? –
UIPickerからNSDateをUTCで取得した後、userTimeZone関数からの短縮形を含むタイムゾーンを取得します。これは、timePicker.dateをデバイス上で選択された時刻に変換します。 dayLightSavingTimeOffsetからこの1時間を追加するだけです。 – R3ptor