Wenn Sie auf iOS 8 oder OS X 10.10 oder höher abzielen, ist dies jetzt noch einfacher. Mit der neuen NSDateComponentsFormatterKlasse können Sie eine bestimmte NSTimeIntervalZeichenfolge 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
}
NSDateCompnentsFormatterermö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 NSDateComponentsoder zwei NSDateObjekte 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#>) {
// ...
}