Is there a daylight savings check in Swift?

前端 未结 2 1446
抹茶落季
抹茶落季 2020-12-18 11:18

I need to check to see if the current date is during daylight savings time. In pseudocode that would be like this:

let date = NSDate()

if date.isDaylightSav         


        
相关标签:
2条回答
  • 2020-12-18 11:49

    An NSDate alone represents an absolute point in time. To decide if a date is during daylight savings time or not it needs to be interpreted in the context of a time zone.

    Therefore you'll find that method in the NSTimeZone class and not in the NSDate class. Example:

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

    Update for Swift 3/4:

    let date = Date()
    
    let tz = TimeZone.current
    if tz.isDaylightSavingTime(for: date) {
        print("Summertime, and the livin' is easy ...                                                                     
    0 讨论(0)
  • 2020-12-18 11:58

    Swift 4.0 or later

    You can check a date isDaylightSavingTime in two ways by time zone identifier or abbreviation.

    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")     
    } 
    
    0 讨论(0)
提交回复
热议问题