我从UIDatePicker(timePicker)获得一个NSDate,它被转换为用户时区,但是因为我在夏令时间休息了一小时。
所以我尝试检查用户是否处于夏令时,如果是,则应该将时间添加到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 ?? ""
}
答案 0 :(得分:0)
NSDate本质上是UTC(它没有时区)。最好以UTC格式保存/转移日期。然后,您可以将此UTC时间戳转换为您偏好的任何时区。请尝试转换为您的首选时区,而不是检测用户是否为DST。以下是如何将任何日期转换为本地时区的示例。
var date = ...
var myTimeZone = NSTimeZone.localTimeZone()
var df = NSDateFormatter()
df.timeZone = myTimeZone
df.dateFormat = "yyyy.MM.dd G 'at' HH:mm:ss zzz"
df.stringFromDate(date)