将毫秒转换为白天,小时,分钟和秒iOS?

时间:2016-03-03 11:51:35

标签: ios date date-arithmetic

我需要将毫秒转换为天,小时,分钟秒。

例如:5天,4小时,13分钟,1秒。

由于

4 个答案:

答案 0 :(得分:4)

如果您不想自己进行计算,可以选择这样的解决方案。

但是,我知道这是一个有点昂贵的解决方案,所以你需要了解运行时潜在的性能问题 - 取决于你打算调用它的频率。

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);

答案 1 :(得分:2)

您可以编写自己的函数:

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"

答案 2 :(得分:0)

试试这个

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);

答案 3 :(得分:0)

我已经在Objective-c和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);

输出 - 秒:9分钟:56小时:38天:7

<强>目标

        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);

输出 - 秒:10分钟:56小时:38天:7