หากคุณกำหนดเป้าหมายที่หรือสูงกว่า iOS 8 หรือ OS X 10.10 สิ่งนี้จะง่ายขึ้นมาก NSDateComponentsFormatter
คลาสใหม่ช่วยให้คุณสามารถแปลงค่าที่กำหนดNSTimeInterval
จากค่าเป็นวินาทีเป็นสตริงที่แปลเป็นภาษาท้องถิ่นเพื่อแสดงให้ผู้ใช้เห็น ตัวอย่างเช่น:
วัตถุประสงค์ -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
รวดเร็ว
let interval = 326.4
let componentFormatter = NSDateComponentsFormatter()
componentFormatter.unitsStyle = .Positional
componentFormatter.zeroFormattingBehavior = .DropAll
if let formattedString = componentFormatter.stringFromTimeInterval(interval) {
print(formattedString) // 5:26
}
NSDateCompnentsFormatter
ยังช่วยให้เอาต์พุตนี้อยู่ในรูปแบบที่ยาวขึ้น ข้อมูลเพิ่มเติมสามารถพบได้ใน NSHipster ของบทความ NSFormatter และขึ้นอยู่กับคลาสที่คุณใช้งานอยู่แล้ว (ถ้าไม่มีNSTimeInterval
) อาจสะดวกกว่าในการส่งอินสแตนซ์ของตัวจัดรูปแบบNSDateComponents
หรือNSDate
วัตถุสองชิ้นซึ่งสามารถทำได้เช่นกันโดยใช้วิธีการต่อไปนี้
วัตถุประสงค์ -C
NSString *formattedString = [componentFormatter stringFromDate:<#(NSDate *)#> toDate:<#(NSDate *)#>];
NSString *formattedString = [componentFormatter stringFromDateComponents:<#(NSDateComponents *)#>];
รวดเร็ว
if let formattedString = componentFormatter.stringFromDate(<#T##startDate: NSDate##NSDate#>, toDate: <#T##NSDate#>) {
// ...
}
if let formattedString = componentFormatter.stringFromDateComponents(<#T##components: NSDateComponents##NSDateComponents#>) {
// ...
}