Wenn Sie auf iOS 8 oder OS X 10.10 oder höher abzielen, ist dies jetzt noch einfacher. Mit der neuen NSDateComponentsFormatter
Klasse können Sie eine bestimmte NSTimeInterval
Zeichenfolge in Sekundenschnelle in eine lokalisierte Zeichenfolge konvertieren , um sie dem Benutzer anzuzeigen. Beispielsweise:
Ziel c
NSTimeInterval interval = 326.4;
NSDateComponentsFormatter *componentFormatter = [[NSDateComponentsFormatter alloc] init];
componentFormatter.unitsStyle = NSDateComponentsFormatterUnitsStylePositional;
componentFormatter.zeroFormattingBehavior = NSDateComponentsFormatterZeroFormattingBehaviorDropAll;
NSString *formattedString = [componentFormatter stringFromTimeInterval:interval];
NSLog(@"%@",formattedString); // 5:26
Schnell
let interval = 326.4
let componentFormatter = NSDateComponentsFormatter()
componentFormatter.unitsStyle = .Positional
componentFormatter.zeroFormattingBehavior = .DropAll
if let formattedString = componentFormatter.stringFromTimeInterval(interval) {
print(formattedString) // 5:26
}
NSDateCompnentsFormatter
ermöglicht auch, dass diese Ausgabe in längeren Formen vorliegt. Weitere Informationen finden Sie im NSFormatter- Artikel von NSHipster . Abhängig davon, mit welchen Klassen Sie bereits arbeiten (falls nicht NSTimeInterval
), ist es möglicherweise bequemer, dem Formatierer eine Instanz NSDateComponents
oder zwei NSDate
Objekte zu übergeben, was auch über die folgenden Methoden erfolgen kann.
Ziel c
NSString *formattedString = [componentFormatter stringFromDate:<#(NSDate *)#> toDate:<#(NSDate *)#>];
NSString *formattedString = [componentFormatter stringFromDateComponents:<#(NSDateComponents *)#>];
Schnell
if let formattedString = componentFormatter.stringFromDate(<#T##startDate: NSDate##NSDate#>, toDate: <#T##NSDate#>) {
// ...
}
if let formattedString = componentFormatter.stringFromDateComponents(<#T##components: NSDateComponents##NSDateComponents#>) {
// ...
}