func timeDuration() {
let currentTimeStr = myTime()
let oldTimeStr = UserDefaults.standard.string(forKey: "myTime")
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "H:mm:ss"
let dateComponentFormatter = DateComponentsFormatter()
dateComponentFormatter.allowedUnits = [.hour, .minute]
dateComponentFormatter.unitsStyle = .short
if let currentTime = dateFormatter.date(from: currentTimeStr),
let oldTime = dateFormatter.date(from: oldTimeStr!),
let durationStr = dateComponentFormatter.string(from: oldTime, to: currentTime)
{
print(durationStr) // 2 hrs
lblDuration.stringValue = durationStr + " Ago" }
}
func myTime() -> String {
let date = Date()
let calendar = Calendar.current
let hour = calendar.component(.hour, from: date)
let minutes = calendar.component(.minute, from: date)
let seconds = calendar.component(.second, from: date)
return "\(hour):\(minutes):\(seconds)"
}
Я использую обе функции в своем приложении, в основном мое приложение отслеживает последний раз, когда я принимал дозу лекарства. Он также вызывает функцию timeDuration, чтобы я мог отобразить количество часов и минут, которое было с момента последней дозы. В 12:00 у него есть ошибка, он сначала показывает время как 0,00.00, так что кое-как он портит продолжительность. Я предоставил снимок экрана с этим. Также я попытался добавить оператор if, чтобы сделать if hour == 0, а затем изменить часы на 24, и он отображает время как 24:00:00, но все равно влияет на мой код продолжительности. Может кто-нибудь помочь.
Вы можете скачать исходный код моего проекта по ссылке ниже.
Исходный код проекта