     /// 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()) -> Date {
         var components = calendar.dateComponents([.weekOfYear, .yearForWeekOfYear], from: self.startOfDay())
-        components.weekday = 2 // Monday
+        components.weekday = .monday
         let startOfWeek = calendar.date(from: components)!
         return startOfWeek
     }

    /// End of day
    ///
    /// - Returns: Date
    public func endOfDay() -> Date {
        var components = DateComponents()
        components.day = 1
        let date = Calendar.current.date(byAdding: components, to: self.startOfDay())
        return (date?.addingTimeInterval(-1))!
    }
    

    /// Start of day
    ///
    /// - Returns: Date
    public func startOfDay(calendar: Calendar = Calendar()) -> Date {
        let unitFlags = Set<Calendar.Component>([.year, .month, .day])
        let components = calendar.dateComponents(unitFlags, from: self)
        return calendar.date(from: components)!
