2012-11-09 29 views
7

मैं एक्सकोड में नया हूं और मुझे निम्न समस्या है:NSTimeInterval का सही तरीके से उपयोग कैसे करें?

मुझे एक ऐसी विधि चाहिए जो मुझे अब तक दी गई तारीख के बाद से गुजरने का समय दे। यदि यह 2 साल पहले था तो मैं "2 साल पहले" एक स्ट्रिंग वापस करना चाहता हूं, लेकिन अगर यह 5 मिनट पहले था तो मैं इसे "5 मिनट पहले" के साथ एक स्ट्रिंग वापस करना चाहता हूं।

मैंने पहले से ही एनएसटीइम इंटरवल और एनएसडीएटीफ़ॉर्मेटर की जांच की है लेकिन मुझे इसे काम करने का कोई तरीका नहीं मिला।

+1

इस सवाल यहाँ उत्तर दिया गया है हो सकता है एक सौ गुना। Googling के बारे में इतना मुश्किल क्या है? – jimpic

+2

आपको इसे खुद लिखना पड़ सकता है। यह चौंकाने वाला है, मुझे पता है। – trojanfoe

उत्तर

14

बस आप आरंभ करने के लिए ...

आप इस प्रकार का संदर्भ तारीख बनाना होगा:

NSCalendar *gregorian = [[NSCalendar alloc] 
          initWithCalendarIdentifier:NSGregorianCalendar]; 

NSDateComponents *dateComponents = [[NSDateComponents alloc] init]; 
dateComponents.year = 2012; 
dateComponents.month = 1; 
dateComponents.day = 1; 
dateComponents.hour = 0; 
dateComponents.minute = 0; 
dateComponents.second = 0; 

NSDate *referenceDate = [gregorian dateFromComponents: dateComponents]; 

वर्तमान दिनांक इस तरह प्राप्त किया जा सकता:

NSDate *now = [NSDate date]; 

समय अंतराल है सेकंड में, तो ...

NSTimeInterval interval = [now timeIntervalSinceDate:referenceDate]; 
NSLog (@"reference date was %.0f seconds ago", interval); 

मुझे यकीन है कि आप इसे यहां से अपने आप से बाहर निकालने में सक्षम होंगे ...

This answer आपकी मदद कर सकता है।

2

धन्यवाद, मैं सोच रहा था कि को कोड की इतनी सारी लाइनों के बिना ऐसा करने का कोई आसान तरीका है या नहीं।

आप इस तरह संदर्भ तारीख बना सकते हैं:

NSDate *referenceDate = [NSDate date]; 
[[NSCalendar currentCalendar] rangeOfUnit:NSYearCalendarUnit 
           startDate:&referenceDate 
           interval:NULL 
            forDate:referenceDate]; 

या आप इस प्रयास करें: https://github.com/billgarrison/SORelativeDateTransformer