2015-12-30 5 views
1

Мне нужно проверить, соответствует ли текущая дата во время летнего времени. Что-то вроде этого:Есть ли дневной свет в Свифт?

let date = NSDate() 

if date.isDaylightSavingsTime { 

    print("Success") 

} 

Там, кажется, не быть в принципе ничего об этом, так как я не смог найти его в любом месте в Интернете.

+1

Как 'NSDate()' класс фундаментные и принимает, по существу, одни и те же методы и аргументы для Swift и Obj-C, следующий поток должен быть в состоянии помочь вам (obj-c): http://stackoverflow.com/questions/28438156/incorrect-time-string-with-nsdateformatter-with-daylight-saving-time , См., В частности, ответ LeoDabus, который использует быстрый (и «NSTimeZone') – dfri

+1

@dfri http://stackoverflow.com/a/27053592/2303865 –

ответ

11

Один только NSDate представляет собой абсолютный момент времени. Чтобы решить, является ли дата во время летнего времени или нет , ее необходимо интерпретировать в контексте часового пояса.

Поэтому вы найдете that method в NSTimeZone классе и не в NSDate классе. Пример:

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 ... ") 
} 
+0

отлично работает, спасибо –