2017-05-05 5 views
0

J'ai un certain nombre, comme:Comment convertir un nombre à un format d'heure normalement?

301 

Je veux convertir en un format de temps: 00:05:01

Mon idée est de laisser le 301/3600 pour obtenir l'heure, (301%3600)/60 obtenir la minute, et 301%60 get la seconde, je peux obtenir la chaîne de format, mais s'il y a un moyen facile d'obtenir cela? Parce que je pense que ce n'est peut-être pas normal.

+0

@ Lenny32 Comment utiliser TimeSpan? mon amie. –

+0

Copie possible de [Convertir les entiers secondaires en HH: MM, iPhone] (http://stackoverflow.com/questions/1739383/convert-seconds-integer-to-hhmm-iphone) – Rivendell

+0

@MahipalSingh Je cherche juste une meilleure façon ,. –

Répondre

0

Si vous pouvez vivre avec 0:05:01 (sans zéro pendant des heures), utilisez (NS)DateComponentsFormatter:

Swift:

let number = 301 
let formatter = DateComponentsFormatter() 
formatter.allowedUnits = [.hour, .minute, .second] 
formatter.zeroFormattingBehavior = .pad 
let result = formatter.string(from: TimeInterval(number)) 
print(result) 

ObjC:

NSInteger number = 301; 
NSDateComponentsFormatter *formatter = [[NSDateComponentsFormatter alloc] init]; 
formatter.allowedUnits = NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond; 
formatter.zeroFormattingBehavior = NSDateComponentsFormatterZeroFormattingBehaviorPad; 
NSString *result = [formatter stringFromTimeInterval:(NSTimeInterval)number]; 
NSLog(@"%@", result); 
0

Je pense que votre méthode est appropriée et normale.Il n'est pas nécessaire d'ajouter API comme ceci, parce que c'est simple et clair, Apple ne peut rien faire pour nous, bien sûr, vous pouvez l'emballer vous-même.

0

Essayez ceci en utilisant NSDateFormatter

NSDate *lastUpdate = [[NSDate alloc] initWithTimeIntervalSince1970:301]; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"UTC"]]; 
dateFormatter.dateFormat = @"HH:mm:ss"; 
NSLog(@"date time: %@", [dateFormatter stringFromDate:lastUpdate]);