I have been trying to wrap my head around this for a few days, and not too much information that I could find to help. I have a date from a server, and I am trying to create a 24 hour timer/ countdown from that date. So lets say date is 1/1/22 11:30:33, I want to shower a timer from that time until 1/2/22 11:30:33 ....
func setCountDown(_ date: String?) -> String {
guard let isoDate = date else { return "Error" }
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "en_US_POSIX")
formatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
let newDate = formatter.date(from: isoDate)!
let startTime = newDate
let endTime = newDate.add(hours: 24)!
print("DEBUG TIMER: time interval - startTime:\(startTime) endTime: \(endTime)")
let timeRemaining = endTime.timeIntervalSince(startTime)
print("DEBUG TIMER: Time Remaining - \(timeRemaining)")
let _timeRemaining = TimeInterval(timeRemaining) / 1000
let finaltimeRemaining = Date(timeIntervalSince1970: _timeRemaining)
print("DEBUG TIMER: Time Remaining - \(finaltimeRemaining)")
let timer = Calendar.current.dateComponents([.hour, .minute], from: finaltimeRemaining)
print("DEBUG TIMER: Timer - \(timer.hour):\(timer.minute)")
// //var timeRemaining = endTime - startTime
// let _startTime = TimeInterval(startTime) / 1000
// let startDate = Date(timeIntervalSince1970: _startTime)
// let _endTime = TimeInterval(endTime) / 1000
// let endDate = Date(timeIntervalSince1970: _endTime)
// print("DEBUG TIMER: Start - \(startDate) End - \(endDate)")
// var _timeRemaining = formatter.date(from: timeRemaining.timeIntervalAsString())
// print("DEBUG TIMER Time Remaining \(_timeRemaining)")
// // let startTime = Calendar.current.dateComponents([.hour, .minute], from: newDate)
// let timeExpireLength = Calendar.current.dateComponents([.hour, .minute], from: newDate.add(hours: 24)!)
// let currenTime = Calendar.current.dateComponents([.hour, .minute], from: Date())
// print("DEBUG TIMER Time expiry:\(timeExpireLength) currentTime: \(currenTime)")
// var hour = 0
// var minute = 0
// var time: Date
//// if let newcurrentTime = currenTime, let newExpiryTime = timeExpireLength {
//// time = newcurrentTime - newExpiryTime
//// }
// if let currentHour = currenTime.hour, let expireHour = timeExpireLength.hour {
// hour = currentHour - expireHour
// }
// if let currentMinute = currenTime.minute, let expireMinute = timeExpireLength.minute {
// minute = currentMinute - expireMinute
// }
//
//
// print("DEBUG TIMER Time expiry:\(timeExpireLength) currentTime: \(currenTime)")
// print("DEBUG TIMER Hour: \(hour) Minute:\(minute)")
return "\(timer)"
}