swiftnsdateformatter

Check if specific date isToday (or passed) Swift


via dateformatter, how can I write a function to know if a specific date has passed or is today?

example: March 8, 2020

Date()

    if Date() >= 28March2020 {
      return true
    } else {
      return false
    } 

thanks


Solution

  • You can do:

    if Date() >= Calendar.current.dateWith(year: 2020, month: 3, day: 28) ?? Date.distantFuture {
        return true
    } else {
        return false
    }
    

    where dateWith(year:month:day:) is defined as:

    extension Calendar {
        func dateWith(year: Int, month: Int, day: Int) -> Date? {
            var dateComponents = DateComponents()
            dateComponents.year = year
            dateComponents.month = month
            dateComponents.day = day
            return date(from: dateComponents)
        }
    }
    

    This method basically returns the Date with the specified year, month, and day, with the hour, minute, and second components all being 0, that is, start of the specified day. In other words, I am checking whether the instant now is after the start of the day 2020-03-28.