-1

I need to convert an milliseconds into Days, Hours, Minutes Second.

ex: 5 Days, 4 hours, 13 minutes, 1 second.

Thanks

Bhavesh Nayi
  • 3,626
  • 1
  • 27
  • 42
  • Please search before posting. – trojanfoe Mar 03 '16 at 13:18
  • Please check my answer. – Twitter khuong291 Mar 03 '16 at 14:11
  • let totalSeconds : Double = Double(totalSeconds) let days = Int(floor(totalSeconds / (60*60*24))) var remainingSeconds = totalSeconds % (60*60*24) let hours = Int(floor(remainingSeconds / (60*60))) remainingSeconds = remainingSeconds % (60*60) let minutes = Int(floor(remainingSeconds / (60))) remainingSeconds = remainingSeconds % (60) let seconds = Int(floor(remainingSeconds)) print("seconds : \(seconds) minutes : \(minutes) hours : \(hours) days : \(days)") – vimal prakash Nov 23 '16 at 10:35

4 Answers4

4

if you don't want to do the calculation by yourself, you could go for such a solution.

I, however, know that is a kinda costly solution, so you need to be aware of potential performance issues in runtime – depending on how frequently you intend to invoke this.


NSTimeInterval _timeInSeconds = 123456789.123; // or any other interval...;

NSCalendar *_calendar = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian];
NSCalendarUnit _units = NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
NSDateComponents *_components = [_calendar components:_units fromDate:[NSDate date] toDate:[NSDate dateWithTimeIntervalSinceNow:_timeInSeconds] options:kNilOptions];

NSLog(@"%ld Days, %ld Hours, %ld Minutes, %ld Seconds", _components.day, _components.hour, _components.minute, _components.second);
holex
  • 23,961
  • 7
  • 62
  • 76
  • we get 14116 Days, 16 Hours, 0 Minutes, 0 Seconds result. please check hour. if hour greter then above 12 then add days 1. do you uderstand my problem. – Bhavesh Nayi Mar 03 '16 at 13:14
  • 1
    I'm afraid to mention but... one day has 24 hours (not 12!), therefore the hours will be in interval `[0-23]`, and according to that having 16-hours is perfectly valid; or what do you think about how many hours a regular day has on planet Earth? – holex Mar 03 '16 at 13:29
  • How about my answer? – Twitter khuong291 Mar 03 '16 at 14:12
3

You can write your own function like this:

import UIKit

let miliseconds: Int = 24 * 3600 * 1000 + 3700 * 1000
// 1 day and 1 hour 1 minute 40 seconds

func convertTime(miliseconds: Int) -> String {

    var seconds: Int = 0
    var minutes: Int = 0
    var hours: Int = 0
    var days: Int = 0
    var secondsTemp: Int = 0
    var minutesTemp: Int = 0
    var hoursTemp: Int = 0

    if miliseconds < 1000 {
        return ""
    } else if miliseconds < 1000 * 60 {
        seconds = miliseconds / 1000
        return "\(seconds) seconds"
    } else if miliseconds < 1000 * 60 * 60 {
        secondsTemp = miliseconds / 1000
        minutes = secondsTemp / 60
        seconds = (miliseconds - minutes * 60 * 1000) / 1000
        return "\(minutes) minutes, \(seconds) seconds"
    } else if miliseconds < 1000 * 60 * 60 * 24 {
        minutesTemp = miliseconds / 1000 / 60
        hours = minutesTemp / 60
        minutes = (miliseconds - hours * 60 * 60 * 1000) / 1000 / 60
        seconds = (miliseconds - hours * 60 * 60 * 1000 - minutes * 60 * 1000) / 1000
        return "\(hours) hours, \(minutes) minutes, \(seconds) seconds"
    } else {
        hoursTemp = miliseconds / 1000 / 60 / 60
        days = hoursTemp / 24
        hours = (miliseconds - days * 24 * 60 * 60 * 1000) / 1000 / 60 / 60
        minutes = (miliseconds - days * 24 * 60 * 60 * 1000 - hours * 60 * 60 * 1000) / 1000 / 60
        seconds = (miliseconds - days * 24 * 60 * 60 * 1000 - hours * 60 * 60 * 1000 - minutes * 60 * 1000) / 1000
        return "\(days) days, \(hours) hours, \(minutes) minutes, \(seconds) seconds"
    }
}

convertTime(miliseconds)
//result is "1 days, 1 hours, 1 minutes, 40 seconds"
Twitter khuong291
  • 11,328
  • 15
  • 80
  • 116
1

I have write the easy code to do this in both Objective-c and Swift:

Swift

    var milliseconds : double_t =  568569600;

    milliseconds =  floor(milliseconds/1000);
    let seconds : double_t = fmod(milliseconds, 60);
    let minutes  : double_t = fmod((milliseconds / 60) , 60);
    let hours  : double_t = fmod((milliseconds / (60*60)), 60);
    let days : double_t = fmod(milliseconds / ((60*60)*24), 24);


    NSLog("seconds : %.f minutes : %.f hours : %.f days : %.f", seconds, minutes, hours, days);

Output - seconds : 9 minutes : 56 hours : 38 days : 7

Objective

        double milliseconds =  568569600;

    milliseconds =  milliseconds/1000;
    float seconds = fmod(milliseconds, 60);
    float minutes = fmod((milliseconds / 60) , 60);
    float hours = fmod((milliseconds / (60*60)), 60);
    float days = fmod(milliseconds / ((60*60)*24), 24);


    NSLog(@"seconds : %.f minutes : %.f hours : %.f days : %.f ", seconds, minutes, hours, days);

Output - seconds : 10 minutes : 56 hours : 38 days : 7

Vignesh Kumar
  • 598
  • 4
  • 11
-1

try this

NSTimeInterval time = <timein ms>;

NSInteger  days = time / (24 * 60 * 60);
NSInteger hours =  (time / (60 * 60)) - (24 * days);
NSInteger minutes =(time / 60) - (24 * 60 * days) - (hours * 60);
NSInteger seconds = (lroundf(time) % 60);
techloverr
  • 2,597
  • 1
  • 16
  • 28