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

    /// 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)!

    /// Take you to sunday 23:59:59 current week
    ///
    /// - Returns: Date
    public func endOfWeek(calendar: Calendar = Calendar(identifier: .gregorian)) -> Date {
        var components = calendar.dateComponents([.weekOfYear, .yearForWeekOfYear], from: self.endOfDay())
        components.weekday = Weekday.sunday.rawValue
        let startOfWeek = calendar.date(from: components)!
        return startOfWeek.endOfDay()
    }
