Tarih dönüştüren birçok projede çalışıyorum. örneğin, güneş takvimi ve bunları Gregoryen tarihlerine nasıl dönüştüreceğim ve tam tersi. Güneş takvimi (Farsça takvimi) bir yıldaki gün sayısı (sıçrama ya da değil) açısından Gregoryen tarihine neredeyse benzer.
Ama son zamanlarda ay takvimi ile bir proje üzerinde çalıştım. Ay takvimi üzerinde araştırma yaparken, ay sistemini güneş enerjisine (en azından bildiğim kadarıyla) dönüştürmek için tek bir mantıksal yöntem olmadığını fark ettim.
Onları araştırdığım bazı referans bağlantıları:
- Hicri Tarih'ten Gregoryen tarihine dönüştürülemiyor (c #)
- Tarihi Hicri Takvim'den Gregoryen Takvime dönüştürün ve tam tersi
- Hicri Tarih DateTime.Parse kullanarak gregorian için
- Hicri tarihini Gregorian dat birimine dönüştür
Yukarıdaki bağlantıları takip ettiğimde, eğitim ve test yapan insanlar algoritmalar sundular, hiçbirinin kesinlikle doğru olmadığını fark ettim.
Söylemek yeterli, sadece "1441/02/30" [Safar 30th]
hangi yöntemi denemek istediğiniz Gregoryen tarihine dönüştürün .
Aşağıdaki görüntü, yukarıda belirtilen örnek için yararlıdır.
Buraya bazı test kodlarımı koydum ve başarısız oldu:
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();
Yukarıdaki Kod için hata:
Dizeyle temsil edilen DateTime, System.Globalization.HijriCalendar takviminde desteklenmez.
HijriCalendar hc = new HijriCalendar();
DateTime date = new DateTime(1441, 2, 30, hc);
return date.ToString();
Yukarıdaki Kod için hata:
"2. ay için gün 1 ile 29 arasında olmalıdır."
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();
Yukarıdaki Kod için hata:
"2. ay için gün 1 ile 29 arasında olmalıdır."
Bundan sonra, Hicri tarihini Gregoryen tarihine çevirmek için herhangi bir algoritma olduğunu anlamaya çalışıyordum?
Bu yüzden bazı İslami çevrimiçi tarih dönüştürücüyü test ediyorum ve şaşırdım! Her iki tarih dönüştürücüsünü de
girmeyi deneyin "1441/2/30"
.
geri dönen ilk October 30, 2019
ve ikinci geri dönen 29 October 2019
Hicri gregoryen-dönüştürücü
İslami Tarih Dönüştürücü - Gregoryen Takvim Dönüştürücü
Bu yüzden Hicri tarihlerini Gregoryen'e çevirmek için gerçek bir algoritma olduğunu bilmiyorum.
Zaman ayırdığınız için şimdiden teşekkür ederiz.
Daha fazla bilgi için https://www.wikiwand.com/simple/Islamic_calendar
Güncelleme : Bilmek için doğru bir kütüphane olmadığını biliyorum. ancak birisi Hicri Takvimi (tüm arayüzü) hakkında bilgi veya ayrıntıya sahipse, lütfen burada açıklayın. Gerçekten herkes için Hicri takvimi dağıtmak istiyorum.
October 30, 2019 wed
ya da olmalı October 29, 2019 tue
. Şimdi denedim.
Omar khayyam
Farsça matematikçi tarafından icat edildi . Fars takvimi 365 gün (artık yılda 366) ancak Ay takvimi Fars takviminden 11-12 gün daha az.