मेरे पास कई प्रोजेक्ट्स हैं जिनमें डेट कंवर्ट हैं। उदाहरण के लिए, मैं सौर कैलेंडर पर काम करता हूं और उन्हें ग्रेगोरियन तिथियों में परिवर्तित करता हूं और इसके विपरीत। सौर कैलेंडर (फारसी कैलेंडर) एक वर्ष में दिनों की संख्या [लीप या नहीं] के संदर्भ में ग्रेगोरियन तिथि के लगभग समान है।
लेकिन मैंने हाल ही में चंद्र कैलेंडर के साथ एक परियोजना पर काम किया। जैसा कि मैंने चंद्र कैलेंडर पर शोध किया है, मुझे एहसास हुआ कि चंद्र प्रणाली को सौर में बदलने के लिए कोई एकल तार्किक तरीका नहीं है (कम से कम जहां तक मुझे पता है)।
यहाँ कुछ संदर्भ लिंक दिए गए हैं जिन पर मैंने शोध किया है:
- हिजरी तारीख से ग्रेगोरियन तिथि में परिवर्तित नहीं किया जा सकता (c #)
- से परिवर्तित तिथि Hijri कैलेंडर ग्रेगोरियन कैलेंडर और vise के लिए
- हिजरी तारीख DateTime.Parse का उपयोग कर gregorian करने के लिए
- में परिवर्तित करें Hijri तिथि ग्रेगोरियन तिथि तक
जैसा कि मैंने उपरोक्त लिंक का पालन किया, प्रशिक्षण, और परीक्षण करने वाले लोगों ने एल्गोरिदम प्रस्तुत किए, मैंने देखा कि उनमें से कोई भी बिल्कुल सही नहीं है।
यह कहने के लिए पर्याप्त है, बस "1441/02/30" [Safar 30th]
ग्रेगोरियन तिथि में परिवर्तित करें जो हर विधि जिसे आप आज़माना चाहते हैं।
निम्नलिखित छवि उपरोक्त उदाहरण के लिए सहायक है।
मैंने अपने कुछ परीक्षण कोड यहां डाल दिए और विफल हो गया:
CultureInfo arSA = new CultureInfo("ar-SA");
arSA.DateTimeFormat.Calendar = new HijriCalendar();
var dateValue = DateTime.ParseExact("1441/02/30", "yyyy/MM/dd", arSA);
return dateValue.ToString();
कोड के लिए त्रुटि:
स्ट्रिंग द्वारा प्रस्तुत दिनांक समय कैलेंडर System.Globalization.ijriCalendar में समर्थित नहीं है।
HijriCalendar hc = new HijriCalendar();
DateTime date = new DateTime(1441, 2, 30, hc);
return date.ToString();
कोड के लिए त्रुटि:
"माह 2 के लिए 1 और 29 के बीच होना चाहिए।"
string hijri = "1441/2/30";
HijriCalendar hc = new HijriCalendar();
int year = int.Parse(hijri.Substring(0, 4));
string rem = hijri.Remove(0, 5);
int end = rem.IndexOf('/', 0);
int month = int.Parse(rem.Substring(0, end));
rem = rem.Remove(0, end + 1);
int day = int.Parse(rem);
DateTime date = new DateTime(year, month, day, hc);
return date.ToShortDateString();
कोड के लिए त्रुटि:
"माह 2 के लिए 1 और 29 के बीच होना चाहिए।"
उसके बाद, मैं यह समझने की कोशिश कर रहा था कि क्या ग्रेगरी की तारीख में परिवर्तित हिजरी तारीख को तैनात करने के लिए कोई एल्गोरिदम है?
इसलिए मैंने कुछ इस्लामी ऑनलाइन तारीख कनवर्टर का परीक्षण किया और मुझे आश्चर्य हुआ!
बस "1441/2/30"
दोनों दिनांक कन्वर्टर्स पर दर्ज करने का प्रयास करें ।
पहला रिटर्निंग October 30, 2019
और दूसरा एक 29 October 2019
हिजरी ग्रेगोरियन-कन्वर्टर
इस्लामिक डेट कन्वर्टर - ग्रेगोरियन कैलेंडर कन्वर्टर
इसलिए मुझे नहीं पता कि हिजरी तारीखों को ग्रेगोरियन में बदलने के लिए कोई वास्तविक एल्गोरिदम है।
आपके समय के लिए आपका अग्रिम धन्यवाद।
अधिक जानकारी के लिए, https://www.wikiwand.com/simple/Islamic_calendar
अपडेट : मुझे पता है कि जानने के लिए कोई सही पुस्तकालय नहीं है। लेकिन अगर किसी के पास हिजरी कैलेंडर (इसके सभी इंटरफ़ेस) के बारे में जानकारी या विवरण है, तो कृपया यहाँ केवल यह वर्णन करें कि मैं वास्तव में एक हिजरी कैलेंडर को सभी के लिए तैनात करना चाहता हूं।
October 30, 2019 wed
या October 29, 2019 tue
। मैंने अब कोशिश की।
Omar khayyam
फारसी गणितज्ञ द्वारा आविष्कार किया गया है। फारसी कैलेंडर में 365 दिन (एक लीप वर्ष में 366) होते हैं, लेकिन चंद्र कैलेंडर फारसी कैलेंडर की तुलना में 11-12 दिन कम है।