क्योंकि यह जाहिरा तौर पर मेरा सबसे लोकप्रिय जवाब है, मैं इसे थोड़ा और अधिक जानकारी शामिल करने के लिए संपादित करने की कोशिश करूंगा।
अपने नाम के बावजूद, NSDateऔर अपने आप में मशीन समय में एक बिंदु को चिह्नित करता है, तारीख को नहीं। एक NSDateऔर एक वर्ष, महीने, या दिन द्वारा निर्दिष्ट समय के बीच कोई संबंध नहीं है। उसके लिए, आपको एक कैलेंडर देखना होगा। किसी भी समय दिया गया कोई भी बिंदु अलग-अलग तारीख की जानकारी आपको कैलेंडर के आधार पर देगा, जो आप देख रहे हैं (दिनांक ग्रेगोरियन और यहूदी कैलेंडर दोनों में समान नहीं हैं, उदाहरण के लिए), और जबकि ग्रेगोरियन कैलेंडर कैलेंडर में सबसे व्यापक रूप से उपयोग किया जाने वाला कैलेंडर है दुनिया - मैं मान रहा हूँ - हम थोड़े से पक्षपाती हैं कि NSDateइसे हमेशा इस्तेमाल करना चाहिए। NSDate, सौभाग्य से, कहीं अधिक द्विदलीय है।
NSCalendarजैसा कि आपने उल्लेख किया है, तारीख और समय गुजरता जा रहा है , लेकिन इसे करने का एक सरल तरीका है:
NSDateComponents *components = [[NSCalendar currentCalendar] components:NSCalendarUnitDay | NSCalendarUnitMonth | NSCalendarUnitYear fromDate:[NSDate date]];
यह NSDateComponentsवर्तमान दिन के लिए वर्तमान सिस्टम कैलेंडर से दिन, महीने और वर्ष युक्त ऑब्जेक्ट उत्पन्न करता है। ( ध्यान दें: यह वर्तमान उपयोगकर्ता-निर्दिष्ट कैलेंडर नहीं है, बस डिफ़ॉल्ट सिस्टम एक है।)
बेशक, यदि आप एक अलग कैलेंडर या दिनांक का उपयोग कर रहे हैं, तो आप इसे आसानी से बदल सकते हैं। उपलब्ध कैलेंडर और कैलेंडर इकाइयों की एक सूची NSCalendarकक्षा संदर्भ में पाई जा सकती है । के बारे में अधिक जानकारी कक्षा संदर्भNSDateComponents में पाई जा सकती है ।NSDateComponents
संदर्भ के लिए, व्यक्तिगत घटकों को एक्सेस NSDateComponentsकरना आसान नहीं है:
NSInteger day = [components day];
NSInteger month = [components month];
NSInteger year = [components year];
आपको बस दिमाग लगाना है: NSDateComponentsआपके द्वारा पूछे गए किसी भी क्षेत्र के लिए मान्य जानकारी नहीं होगी जब तक कि आपने उन्हें उस वैध जानकारी (यानी एस के NSCalendarसाथ उस जानकारी को प्रदान करने का अनुरोध NSCalendarUnit) के साथ उत्पन्न नहीं किया हो । NSDateComponentsअपने आप में कोई संदर्भ जानकारी नहीं है - वे सिर्फ सरल संरचनाएं हैं जो आपके उपयोग के लिए नंबर रखती हैं। यदि आप भी एक युग प्राप्त करना चाहते हैं, उदाहरण के लिए NSDateComponents, आपको ध्वज के NSCalendarसाथ जनरेटर विधि NSCalendarUnitEraखिलानी होगी।