From 4d1eee149aa363cb6315c1a005673d94e75514c7 Mon Sep 17 00:00:00 2001 From: Rasmus Ebbesen Date: Mon, 6 Nov 2017 14:57:56 +0100 Subject: [PATCH 1/2] fixed an issue that made startOfWeek move forward in time on sundays --- Sources/Date+Sugar.swift | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/Sources/Date+Sugar.swift b/Sources/Date+Sugar.swift index 7bbbd69..c0e4d46 100644 --- a/Sources/Date+Sugar.swift +++ b/Sources/Date+Sugar.swift @@ -12,34 +12,41 @@ extension Date { case date = "yyyy-MM-dd" case ISO8601 = "yyyy-MM-dd'T'HH:mm:ssZ" } + + // MARK: Weekdays + public enum Weekday: Int { + case sunday = 1 + case monday + case tuesday + case wednesday + case thursday + case friday + case saturday + } // MARK: Manipulators - - /// Start of week - /// Take you to monday 00:00:00 current week - /// - /// - Returns: Date - public func startOfWeek() -> Date { - let calendar = Calendar.current + public func startOfWeek(calendar: Calendar = Calendar(identifier: .gregorian)) -> Date { + var calendar = calendar + calendar.firstWeekday = Weekday.monday.rawValue var components = calendar.dateComponents([.weekOfYear, .yearForWeekOfYear], from: self.startOfDay()) - components.weekday = 2 // Monday + components.weekday = Weekday.monday.rawValue let startOfWeek = calendar.date(from: components)! return startOfWeek } - - + /// End of week /// Take you to sunday 23:59:59 current week /// /// - Returns: Date - public func endOfWeek() -> Date { - let calendar = Calendar.current + public func endOfWeek(calendar: Calendar = Calendar(identifier: .gregorian)) -> Date { + var calendar = calendar + calendar.firstWeekday = Weekday.monday.rawValue var components = calendar.dateComponents([.weekOfYear, .yearForWeekOfYear], from: self.endOfDay()) - components.weekday = 1 // Monday + components.weekday = Weekday.sunday.rawValue let startOfWeek = calendar.date(from: components)! return startOfWeek.endOfDay() } - + /// Sub month /// /// - Returns: Date From 5a1af126d1180c6c670dd4c6f047496c8e22c674 Mon Sep 17 00:00:00 2001 From: Rasmus Ebbesen Date: Mon, 6 Nov 2017 15:04:28 +0100 Subject: [PATCH 2/2] added the original comments for start of week --- Sources/Date+Sugar.swift | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Sources/Date+Sugar.swift b/Sources/Date+Sugar.swift index c0e4d46..ba33a75 100644 --- a/Sources/Date+Sugar.swift +++ b/Sources/Date+Sugar.swift @@ -25,6 +25,10 @@ extension Date { } // MARK: Manipulators + /// Start of week + /// Take you to monday 00:00:00 current week + /// + /// - Returns: Date public func startOfWeek(calendar: Calendar = Calendar(identifier: .gregorian)) -> Date { var calendar = calendar calendar.firstWeekday = Weekday.monday.rawValue