Swift有夏令时检查吗?

时间:2015-12-30 16:27:50

标签: swift nsdate dst

我需要检查当前日期是否在夏令时期间。在伪代码中会是这样的:

let date = NSDate()

if date.isDaylightSavingsTime {

    print("Success")

}

我无法在互联网上的任何地方找到解决方案。

2 个答案:

答案 0 :(得分:17)

NSDate表示绝对时间点。 确定日期是否在夏令时期间 它需要在时区的上下文中进行解释。

因此,您会在NSTimeZone课程中找到that method而不是thisNSDate课程中。例如:

let date = NSDate()

let tz = NSTimeZone.localTimeZone()
if tz.isDaylightSavingTimeForDate(date) {

}

Swift 3/4的更新:

let date = Date()

let tz = TimeZone.current
if tz.isDaylightSavingTime(for: date) {
    print("Summertime, and the livin' is easy ... ")
}

答案 1 :(得分:1)

Swift 4.0或更高版本

您可以按时区identifierabbreviation两种方式检查日期isDaylightSavingTime。

let timeZone = TimeZone(identifier: "America/New_York")!
if timeZone.isDaylightSavingTime(for: Date()) {
   print("Yes, daylight saving time at a given date")        
}
let timeZone = TimeZone(abbreviation: "EST")!
if timeZone.isDaylightSavingTime(for: Date()) {
   print("Yes, daylight saving time at a given date")     
}