यदि आप iOS 8 या OS X 10.10 से ऊपर या ऊपर लक्ष्य बना रहे हैं, तो यह बहुत आसान हो गया है। नई NSDateComponentsFormatterकक्षा आपको NSTimeIntervalउपयोगकर्ता को दिखाने के लिए किसी दिए गए सेकंड में उसके मान को स्थानीयकृत स्ट्रिंग में परिवर्तित करने की अनुमति देती है । उदाहरण के लिए:
उद्देश्य सी
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वस्तुओं को पास करना अधिक सुविधाजनक हो सकता है , जो निम्न विधियों के माध्यम से भी किया जा सकता है।
उद्देश्य सी
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#>) {
// ...
}