Jika Anda menargetkan pada atau di atas iOS 8 atau OS X 10.10, ini menjadi jauh lebih mudah. Kelas baru NSDateComponentsFormatter
memungkinkan Anda mengonversi yang diberikan NSTimeInterval
dari 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
}
NSDateCompnentsFormatter
juga 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 NSDate
objek, 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#>) {
// ...
}