2011-10-05 14 views
38

मैं एक महीने और वर्ष (सभी पूर्णांक प्रारूप में) से एनएसडीएट उत्पन्न करने की कोशिश कर रहा हूं।दिन, महीने और वर्ष से एनएसडीएट उत्पन्न करें

अभी मेरा प्रयास है इस तरह: निम्नलिखित जब दिन = 24, महीने = 8, साल

NSCalendar *calendar = [NSCalendar currentCalendar]; 
NSDateComponents *components = [[NSDateComponents alloc] init]; 
NSNumber *day = [dataSource valueForKey:@"day"]; 
NSNumber *month = [dataSource valueForKey:@"month"]; 
NSNumber *year = [dataSource valueForKey:@"year"]; 
[components setDay:[day intValue]]; 
[components setMonth:[month intValue]]; 
[components setMonth:[year intValue]]; 
NSDate *_date = [calendar dateFromComponents:components]; 

हालांकि, प्रारंभ_तिथि आउटपुट = 2011:

0168-07-25 04:56:02 +0000

मुझे कुछ गलत गलत करना होगा, लेकिन मुझे नहीं पता कि क्या। किसी को पता है कि क्या हो रहा है? (setYear: होना चाहिए अंतिम पंक्ति)

[components setDay:[day intValue]]; 
[components setMonth:[month intValue]]; 
[components setYear:[year intValue]]; 
+0

2016 के अंत में यहां आया है और इस सवाल अब भी उपयोगी है। यह देखते हुए कि इस पर 30 सहायक वोट हैं, यदि संभव हो तो मैं फिर से खोलने के लिए वोट दूंगा। इसके अतिरिक्त, करीबी मतदाताओं में से कोई भी अपने प्रोफाइल को देखकर अपने शीर्ष टैग में उद्देश्य-सी, आईओएस, कोको-टच, कोको, एनएसडेट नहीं है। – matrixugly

उत्तर

38

आप अपने कोड लिखने में कोई गलती की है। होना चाहिए:

[components setDay:[day intValue]]; 
[components setMonth:[month intValue]]; 
[components setYear:[year intValue]]; 
+0

हाँ, जब आप चीजों को विभाजित करते हैं तो यह सबसे अच्छा काम करता है - यह स्पष्ट नहीं है कि वर्ष 168 बनाम 167 क्यों है, या क्यों दिन 25 बनाम 24 है। लेकिन गरीब NSDateComponents ऑब्जेक्ट में कोई संदेह नहीं था। –

+0

(जीएमटी को समय क्षेत्र सेट करने में विफलता के कारण दिन बंद हो गया है।) –

+3

धन्यवाद! निश्चित रूप से आंखों का एक और सेट (या कॉफी का एक और बर्तन) की आवश्यकता है :) – minimalpop

2

आप setMonth दो बार बुला रहे हैं, वर्ष के लिए मूल्य के साथ दूसरी बार:

2

एक स्पष्ट गड़बड़ है:

[components setMonth:[year intValue]]; //setting month with year! 
संबंधित मुद्दे