देता मैं दो दिनांक तार निम्नलिखित हैं: (1) 24/04/2013 और (2) 19/03/2013 मैं कोशिश कर रहा हूँ इस्लामी (उम Al Qura) दिनांक में इन तारीखों कनवर्ट करते हैं, मैं इस कोड ब्लॉक का उपयोग कर रहा ऐसा करने के लिए:इस्लामी तारीख करने के लिए एक ग्रेगोरी तिथि स्ट्रिंग परिवर्तित सही और गलत परिणाम
NSDateFormatter *df = [[NSDateFormatter alloc] init];
df.dateFormat = @"dd/MM/yyyy";
df.calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *dateInGrogrian = [df dateFromString:@"24/04/2013"];
NSDateFormatter *df2 = [[NSDateFormatter alloc] init];
NSCalendar * cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSIslamicCalendar];
[df2 setCalendar:cal];
[df2 setDateFormat:@"dd/MM/yyyy"];
NSLog(@"Converted date to Islamic = %@",[df2 stringFromDate:dateInGrogrian]);
यदि इनपुट स्ट्रिंग 24/04/2013 NSLog
दिखाया गया था:
Converted date to Islamic = 14/06/1434
जो सही है (the formal Islamic calendar के अनुसार जो सभी इस्लामी काउंटी में उपयोग किया जाता है रों)। लेकिन अगर इनपुट स्ट्रिंग 19/03/2013 NSLog
दिखाया गया था:
Converted date to Islamic = 08/05/1434
जो (इस्लामी कैलेंडर सही दिनांक 1434/07/05 जो 1 दिन पीछे होना चाहिए के अनुसार) गलत है।
- नोट्स विचार करने के लिए एक जवाब का सुझाव से पहले:
(1) मैं NSIslamicCalendar
के बजाय कैलेंडर पहचानकर्ता NSIslamicCivilCalendar
उपयोग करने के लिए कोशिश की है, लेकिन कोई लाभ नहीं हुआ: परिवर्तित दिनांक से एक सही था और दूसरा गलत था (1 दिन पीछे)।
(2) मैं इस तरह GMT समय क्षेत्र का उपयोग करने की कोशिश की है: [df2 setTimeZone : [NSTimeZone timeZoneWithName:@"GMT"]];
, इस दिन के लिए एक सही परिवर्तित तारीख (2) लेकिन दिन के लिए गलत (1) (1 दिन के पीछे) का उत्पादन किया।
(3) मैं समाधान के संयोजन की कोशिश की है: GMT समय क्षेत्र के बिना साथ/NSIslamicCivilCalendar
, NSIslamicCalendar
साथ/GMT समय क्षेत्र के बिना, लेकिन यह भी कोई लाभ नहीं हुआ ...
किसी को भी एक कोड ब्लॉक प्रदान कर सकते हैं जो दोनों तिथियों को संतुष्ट करता है? इसलिए मैं सुनिश्चित करता हूं कि किसी भी प्रदत्त ग्रेगोरियन दिनांक स्ट्रिंग को इस्लामी दिनांक स्ट्रिंग में सही ढंग से परिवर्तित किया गया हो।
आपको बहुत बहुत धन्यवाद।
मुझे लगता है कि उस स्थान विशेष और डेलाइट सेविंग की वजह से है ... मैं से एक जवाब में पढ़ा [इस दिनांक समय विशेषज्ञ] (http://stackoverflow.com/users/106435/vikingosegundo) पढ़ें इस [इस्लामी कैलेंडर त्रुटि] (http: // stackoverflow।कॉम/प्रश्न/1425 9 3 9 7/nscalendar-date-error/14264680 # 14264680) यह आपकी मदद कर सकता है –
@AnopVaidya आपके द्वारा प्रदान किया गया लिंक समस्या का समाधान नहीं करता है, यह सिर्फ इस्लामी कैलेंडर कैसे काम करता है, इस बारे में सामान्य जानकारी देता है उत्तर में प्रदान किए गए कोड नमूने का प्रयास किया लेकिन इससे कोई फर्क नहीं पड़ता। – JAHelia
हालांकि यह इस विसंगति के कारण का उत्तर नहीं दे सकता है, यह कुछ प्रकाश बहाल करने में मदद कर सकता है: यदि आप 10/04/2013 को परिवर्तित करते हैं, तो आपको 30/05/1434 मिलते हैं। मुझे इस्लामी कैलेंडर के बारे में कुछ भी पता नहीं है, लेकिन विकिपीडिया/ऑनलाइन कनवर्टर्स से मेरी समझ यह है कि यह 5 वां महीना इस साल केवल 2 9 दिन है, इसलिए यह विसंगति का संकेत हो सकता है। – Nobosi