0

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)"
    }
Asperi
  • 228,894
  • 20
  • 464
  • 690
Christopher
  • 73
  • 10
  • You likely don't want to convert back to date components (especially using a time since 1970). Take a look at this? https://stackoverflow.com/questions/28872450/conversion-from-nstimeinterval-to-hour-minutes-seconds-milliseconds-in-swift – jnpdx Feb 04 '22 at 22:47
  • For [example](https://stackoverflow.com/questions/63864914/how-to-add-time-to-a-live-countdown-timer-in-swift/63865403#63865403), [example](https://stackoverflow.com/questions/52215882/ios-how-to-create-countdown-time-hours-minutes-seccond-swift-4/52216136#52216136), [example](https://stackoverflow.com/questions/51032287/stopping-timer-at-defined-amount-of-time-in-swift/51032794#51032794) – MadProgrammer Feb 04 '22 at 22:50

0 Answers0