diff --git a/MuslimData/Classes/Extensions/DateExtensions.swift b/MuslimData/Classes/Extensions/DateExtensions.swift index 0c651c5..50d81c9 100755 --- a/MuslimData/Classes/Extensions/DateExtensions.swift +++ b/MuslimData/Classes/Extensions/DateExtensions.swift @@ -34,4 +34,12 @@ public extension Date { func addMinutes(_ minutes: Double) -> Date { addingTimeInterval(60 * minutes) } + + /// Add hours to the date. + /// + /// - Parameter hours: hours to be added to the date. + /// - Returns: New date that added the specified hours. + func addHours(_ hours: Double) -> Date { + addingTimeInterval(60 * 60 * hours) + } } diff --git a/MuslimData/Classes/Prayer Times/PrayerTime.swift b/MuslimData/Classes/Prayer Times/PrayerTime.swift index 6f6c9e7..ace78d9 100755 --- a/MuslimData/Classes/Prayer Times/PrayerTime.swift +++ b/MuslimData/Classes/Prayer Times/PrayerTime.swift @@ -31,7 +31,22 @@ public struct PrayerTime { maghrib = maghrib.addMinutes(offsets[4]) isha = isha.addMinutes(offsets[5]) } - + + /// Apply daylight saving time to the current prayer times. + private mutating func applyDST() { + + let isDST = TimeZone.current.isDaylightSavingTime() + + if (isDST) { + fajr = fajr.addHours(1) + sunrise = sunrise.addHours(1) + dhuhr = dhuhr.addHours(1) + asr = asr.addHours(1) + maghrib = maghrib.addHours(1) + isha = isha.addHours(1) + } + } + // MARK: - Public Methods /// Get prayer times from the prayer database. @@ -94,6 +109,7 @@ public struct PrayerTime { maghrib: maghrib.toDate(date), isha: isha.toDate(date)) prayerTime.applyOffsets(attributes.offsets) + prayerTime.applyDST() callback(prayerTime, nil) } }