Convert seconds into minutes and seconds

Viewed 40742

How can I convert seconds into minutes and seconds?

I am aware that you can convert seconds to minutes like so, but I don't know how I can get the remainder of seconds...

int minutes = seconds / 60;
6 Answers

You can resolve this problem with NSMeasurement and NSUnitDuration. These classes require iOS 10.0+, tvOS 10.0+, macOS 10.12+ or watchOS 3.0+. The code below converts seconds to minutes and seconds.

int seconds = 230;
NSMeasurement* measurement = [[NSMeasurement alloc] initWithDoubleValue:seconds unit:NSUnitDuration.seconds];
NSMeasurement* measurementMinutes = [measurement measurementByConvertingToUnit:NSUnitDuration.minutes];
int minutes = floor(measurementMinutes.doubleValue);
NSMeasurement* measurementMinutesWithoutSeconds = [measurement measurementBySubtractingMeasurement:[[NSMeasurement alloc] initWithDoubleValue:minutes unit:NSUnitDuration.minutes]];
int secondsRemainder = floor([measurementMinutesWithoutSeconds measurementByConvertingToUnit:NSUnitDuration.seconds].doubleValue);
NSLog(@"%d %d", minutes, secondsRemainder); // 3 50

Swift 5:

String with format hh:mm:ss

extension Float {

    var hoursMinutesSecondsFormat : String {
    let seconds = self.truncatingRemainder(dividingBy: 60).rounded(.toNearestOrAwayFromZero)
    let minutes = (self / 60).truncatingRemainder(dividingBy: 60).rounded(.toNearestOrAwayFromZero)
    let hours   = (self / 3600).rounded(.toNearestOrAwayFromZero)
    return String(format:"%02.f:%02.f:%02.f", hours,minutes, seconds);
    }
   
}

DateComponentsFormatter: A formatter that creates string representations, by using unitsStyle u can get a string as you want and mention allowedUnits. e.g: output for unitsStyle:: for 10000 secods

  1. full = "2 hours, 46 minutes, 49 seconds"

  2. positional = "2:46:40"

  3. abbreviated = "2h 46m 40s"

  4. spellOut = "two hours, forty-six minutes, forty seconds”

  5. short = "2hr,46 min,40 sec"

  6. brief = "2hr 46min 40sec"

    Easy to use:

     let time = convertSecondsToHrMinuteSec(seconds: 10000)
    
     func convertSecondsToHrMinuteSec(seconds:Double) -> String{
             let formatter = DateComponentsFormatter()
             formatter.allowedUnits = [.hour, .minute, .second]
             formatter.unitsStyle = .full
    
             let formattedString = formatter.string(from: TimeInterval(seconds))!
             print(formattedString)
             return formattedString
         }
    
Related