0

Im trying to compare two dates along with time (which are in format ISO8601). I've implemented below logic but the object returns nil(this will not take care of time which I need). Please advice what needs to done

eg: when two dates "2017-01-25T01:00:00.00" and "2018-01-25T01:00:00.00"is compared, it should return true (i.e., secondDate > firstDate) taking time into consideration

    //Date Formatter
    let dateFormatter = DateFormatter()
    let dateFormatString = "2017-01-25T01:00:00.00"
    dateFormatter.dateFormat = dateFormatString
    dateFormatter.calendar = Calendar(identifier: Calendar.Identifier.iso8601)
    dateFormatter.locale = Locale(identifier: "en_EN_POSIX")
    dateFormatter.timeZone = TimeZone(secondsFromGMT: 0)

    //Get Dates from ISO8601 format 
    var dateString: Date?
    var dateFromAPI: Date?
    //Date from string value (defaultFirstDate is string value)
    if let firstDate = defaultFirstDate, let truncatedDate = firstDate.components(separatedBy: "T").first{ 
    //Issue is with below line - it returns nil
        dateString = dateFormatter.date(from: truncatedDate)
    }
    if let secondDate = defaultSecondDate, let truncatedDate = secondDate.components(separatedBy: "T").first { 
    //Issue is with below line - it returns nil
        dateFromAPI = dateFormatter.date(from: truncatedDate)
    }


    if let date1 = dateString, let date2 = dateFromAPI, date1.compare(date2) == ComparisonResult.orderedAscending {
        showPage = true
    }
Ashh
  • 569
  • 1
  • 6
  • 28

0 Answers0