2016-03-03 86 views
-2

我需要將毫秒轉換爲天,小時,分鐘秒。將毫秒轉換爲日,時,分和秒iOS?

例如:5天,4小時,13分鐘,1秒。

感謝

+0

請之前搜索張貼。 – trojanfoe

+0

請檢查我的答案。 – Khuong

+0

讓totalSeconds:雙=雙(totalSeconds) 讓天= INT(地板(totalSeconds /(60 * 60 * 24))) VAR remainingSeconds = totalSeconds%(60 * 60 * 24) 讓小時= INT (地板(remainingSeconds /(60 * 60))) remainingSeconds = remainingSeconds%(60 * 60) 讓分鐘= INT(地板(remainingSeconds /(60))) remainingSeconds = remainingSeconds%(60) 讓秒= Int(floor(remainingSeconds)) print(「seconds:\(seconds)minutes:\(minutes)hours:\(hours)days:\(days)」) –

回答

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

Do not你的意思是'時間= /1000;'? – trojanfoe

+0

對不起抱歉我已經更新了代碼 – techloverr

+0

我看不到代碼是如何工作的。爲什麼 - (24 *天);'? 24天的意義是什麼? – trojanfoe

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

我們得到了14116天,16小時,0分鐘,0秒的結果。請檢查小時。如果小時超過12則加上第1天。你是否理解我的問題。 –

+0

我不敢提及,但是......有一天有24小時(不是12!),因此小時數將在[0-23]時間間隔內,並且據說16小時是完全有效的;或者你怎麼看待地球上常規日子有多少個小時? – holex

+0

我的回答如何? – Khuong

1

您可以編寫自己的功能是這樣的:

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" 
+0

這不起作用。 – trojanfoe

+0

看到圖片,我不知道你爲什麼說這不起作用? – Khuong

+1

它不會工作,因爲一秒內有1000毫秒,而不是100秒。 – trojanfoe

0

我寫易代碼來做到這一點在這兩個Objective-C和斯威夫特:

斯威夫特

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

+1

這是不正確的。所有你正在做的是毫秒轉換爲秒*然後*分鐘*然後*小時等。對象是將毫秒分解爲日/小時/分鐘/秒。 – trojanfoe

+0

我已經更新了代碼。那麼,你現在可以試試嗎? –

+0

這看起來更好。 – trojanfoe