Better comparing Dates in Swift using Calendar
We often come in a situation where we have to check whether a given Date is on a specific day, hour or week or something like that. In the past we solved this by calculating the date with 0 hours and 0 minutes and then compare it with our given Date. This approach becomes even more complicated and error-prone when you have to work with different timezones.
Fortunately there is a struct called Calendar which has the pretty little method func compare(_ date1: Date, to date2: Date, toGranularity component: Calendar.Component) -> ComparisonResult. As its name suggest, it compares two Date objects to a given granularity
var calender = Calendar.current
calender.timeZone = TimeZone.current
let result = calender.compare(date, to: now, toGranularity: .day)
let isSameDay = result == .orderedSame
Instead of .day  also every other Calendar.Component is possible. Here is a list of some (but not all) Calendar.Component :
- .minute
 - .second
 - .month
 - .weekOfMonth
 - .weekday