Last active
March 4, 2020 19:48
-
-
Save michaelevensen/ac72b90f98f325a8ed0313d89bfc4aef to your computer and use it in GitHub Desktop.
Awesome Date extension.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
extension Date { | |
var startOfDay: Date { | |
return Calendar.current.startOfDay(for: self) | |
} | |
var endOfDay: Date { | |
var components = DateComponents() | |
components.day = 1 | |
components.second = -1 | |
return Calendar.current.date(byAdding: components, to: startOfDay)! | |
} | |
var startOfMonth: Date { | |
let components = Calendar.current.dateComponents([.year, .month], from: startOfDay) | |
return Calendar.current.date(from: components)! | |
} | |
var endOfMonth: Date { | |
var components = DateComponents() | |
components.month = 1 | |
components.second = -1 | |
return Calendar.current.date(byAdding: components, to: startOfMonth)! | |
} | |
func isBetweeen(date date1: Date, andDate date2: Date) -> Bool { | |
return date1.compare(self) == self.compare(date2) | |
} | |
static var yesterday: Date { return Date().dayBefore } | |
static var tomorrow: Date { return Date().dayAfter } | |
var dayBefore: Date { | |
return Calendar.current.date(byAdding: .day, value: -1, to: noon)! | |
} | |
var dayAfter: Date { | |
return Calendar.current.date(byAdding: .day, value: 1, to: noon)! | |
} | |
var noon: Date { | |
return Calendar.current.date(bySettingHour: 12, minute: 0, second: 0, of: self)! | |
} | |
var month: Int { | |
return Calendar.current.component(.month, from: self) | |
} | |
var isLastDayOfMonth: Bool { | |
return dayAfter.month != month | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment