2010-04-27 20 views
6

मैं बीसी युग में एक तिथि बनाने की कोशिश कर रहा हूं, लेकिन बहुत मेहनत में विफल रहा हूं। निम्नलिखित रिटर्न '4713' साल के रूप में, के बजाय '-4712':दूरस्थ अतीत में एक विशिष्ट तिथि कैसे बनाएं, बीसी युग

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
    NSDateComponents *components = [NSDateComponents new]; 
    [components setYear: -4712]; 
    NSDate *date = [calendar dateFromComponents:components]; 
    NSLog(@"%d", [[calendar components:NSYearCalendarUnit fromDate: date] year]); 

किसी भी विचार मैं गलत क्या कर रहा हूँ?

अद्यतन: वर्किंग कोड

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
    NSDateComponents *components = [NSDateComponents new]; 
    [components setYear: -4712]; 
    NSDate *date = [calendar dateFromComponents:components]; 
    NSDateComponents *newComponents = [calendar components:NSEraCalendarUnit|NSYearCalendarUnit fromDate:date]; 
    NSLog(@"Era: %d, year %d", [newComponents era], [newComponents year]); 

इस युग के लिए प्रिंट 0, बस के रूप में बेन की व्याख्या की।

उत्तर

6

आपका कोड वास्तव में ठीक काम कर रहा है। चूंकि कोई वर्ष शून्य नहीं है, -4712 वर्ष 4713 ईसा पूर्व है। यदि आप युग घटक की जांच करते हैं तो आप देखेंगे कि यह शून्य है, जो ग्रेगोरियन कैलेंडर में बीसी इंगित करता है। उस नकारात्मक चिह्न को फ़्लिप करें और आप 4712 एडी (युग 1) देखेंगे।

+0

मुझे पता था कि मैं पहेली का एक टुकड़ा खो रहा था :) बहुत बहुत धन्यवाद! (कोड का अद्यतन संस्करण जोड़ा गया) – alloy

संबंधित मुद्दे