I want to calculate time difference between 2 dates, and the time difference result must be something like
7h 12m OR 4 d 5h 27m OR 1M 5d 3h 21m
I have tried to write a function like this:
import UIKit
func calculateTimeDifference(from dateTime1: String, to dateTime2: String) -> String {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let dateAsString = dateTime1
let date1 = dateFormatter.date(from: dateAsString)!
let dateAsString2 = dateTime2
let date2 = dateFormatter.date(from: dateAsString2)!
let components : NSCalendar.Unit = [.second, .minute, .hour, .day, .weekOfMonth, .month, .year]
let difference = (Calendar.current as NSCalendar).components(components, from: date1, to: date2, options: [])
var dateTimeDifferenceString = ""
if difference.day != 0 {
dateTimeDifferenceString = "\(difference.day!)d \(difference.hour!)h \(difference.minute!)m"
} else if difference.day == 0 {
dateTimeDifferenceString = "\(difference.hour!)h \(difference.minute!)m"
}
return dateTimeDifferenceString
}
but when I implement this code
let checkinTime = "2018-02-09 07:51:01"
let now = "2018-02-20 14:56:18"
calculateTimeDifference(from: checkinTime, to: now)
// Result: "4d 7h 5m"
I don't know why it just 4 days instead of 11 days
but if I implement it in the same day, it gives correct result
let checkinTime = "2018-02-09 07:51:01"
let now = "2018-02-09 14:56:18"
calculateTimeDifference(from: checkinTime, to: now)
// "7h 5m"
what went wrong in here?