Jika Anda menargetkan pada atau di atas iOS 8 atau OS X 10.10, ini menjadi jauh lebih mudah. Kelas baru NSDateComponentsFormattermemungkinkan Anda mengonversi yang diberikan NSTimeIntervaldari nilainya dalam hitungan detik menjadi string yang dilokalkan untuk ditunjukkan kepada pengguna. Sebagai contoh:
Objective-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
Cepat
let interval = 326.4
let componentFormatter = NSDateComponentsFormatter()
componentFormatter.unitsStyle = .Positional
componentFormatter.zeroFormattingBehavior = .DropAll
if let formattedString = componentFormatter.stringFromTimeInterval(interval) {
print(formattedString) // 5:26
}
NSDateCompnentsFormatterjuga memungkinkan keluaran ini dalam bentuk yang lebih panjang. Info lebih lanjut dapat ditemukan di artikel NSFormatter NSHipster . Dan bergantung pada kelas apa yang sudah Anda kerjakan (jika tidak NSTimeInterval), mungkin lebih mudah untuk meneruskan pemformat sebuah instance NSDateComponents, atau dua NSDateobjek, yang dapat dilakukan juga melalui metode berikut.
Objective-C
NSString *formattedString = [componentFormatter stringFromDate:<#(NSDate *)#> toDate:<#(NSDate *)#>];
NSString *formattedString = [componentFormatter stringFromDateComponents:<#(NSDateComponents *)#>];
Cepat
if let formattedString = componentFormatter.stringFromDate(<#T##startDate: NSDate##NSDate#>, toDate: <#T##NSDate#>) {
// ...
}
if let formattedString = componentFormatter.stringFromDateComponents(<#T##components: NSDateComponents##NSDateComponents#>) {
// ...
}