Ich habe an vielen Projekten mit Datumskonvertierungen gearbeitet. Ich arbeite zum Beispiel am Sonnenkalender und wie man sie in gregorianische Daten umwandelt und umgekehrt. Der Sonnenkalender (persischer Kalender) ähnelt dem gregorianischen Datum in Bezug auf die Anzahl der Tage pro Jahr fast [Sprung oder nicht].
Aber ich habe kürzlich an einem Projekt mit dem Mondkalender gearbeitet. Als ich über den Mondkalender recherchierte, stellte ich fest, dass es keine einzige logische Methode gibt, um das Mondsystem in Solar umzuwandeln (zumindest soweit ich weiß).
Hier sind einige Referenzlinks, die ich auf ihnen recherchiert habe:
- Konvertiert nicht vom Hijri-Datum zum Gregorianischen Datum (c #)
- Konvertieren Sie das Datum vom Hijri-Kalender in den Gregorianischen Kalender und umgekehrt
- Hijri Date Mit DateTime.Parse nach Gregorian
- Konvertieren Sie das Hijri-Datum in gregorianische Daten
Als ich den obigen Links folgte, trainierte und testete ich Algorithmen, stellte ich fest, dass keiner von ihnen absolut korrekt ist.
Es genügt zu sagen, konvertieren Sie einfach "1441/02/30" [Safar 30th]
in gregorianisches Datum, welche Methode Sie ausprobieren möchten.
Das folgende Bild ist für das oben genannte Beispiel hilfreich.
Ich habe hier einige Testcodes eingegeben und versage:
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();
Der Fehler für den obigen Code:
Die durch die Zeichenfolge dargestellte DateTime wird im Kalender System.Globalization.HijriCalendar nicht unterstützt.
HijriCalendar hc = new HijriCalendar();
DateTime date = new DateTime(1441, 2, 30, hc);
return date.ToString();
Der Fehler für den obigen Code:
"Tag muss für Monat 2 zwischen 1 und 29 liegen."
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();
Der Fehler für den obigen Code:
"Tag muss für Monat 2 zwischen 1 und 29 liegen."
Danach habe ich versucht zu verstehen, dass es einen Algorithmus zum Bereitstellen des konvertierten Hijri-Datums zum Gregorianischen Datum gibt.
Also habe ich einen islamischen Online-Datumskonverter getestet und war überrascht!
Versuchen Sie einfach, "1441/2/30"
beide Datumskonverter einzugeben .
der erste kehrt zurück October 30, 2019
Und der zweite kehrt zurück 29 October 2019
Hijri gregorian-converter
Islamic Date Converter - Gregorian Calendar Converter
Ich weiß also nicht, ob es einen echten Algorithmus gibt, um Hijri-Daten in Gregorianisch umzuwandeln.
Vielen Dank im Voraus für Ihre Zeit.
Weitere Informationen finden Sie unter https://www.wikiwand.com/simple/Islamic_calendar
Update : Ich weiß, dass es keine richtige Bibliothek gibt. Aber wenn jemand Kenntnisse oder Details über den Hijri-Kalender (seine gesamte Benutzeroberfläche) hat, beschreiben Sie bitte hier, dass ich wirklich einen Hijri-Kalender für alle bereitstellen möchte.
October 30, 2019 wed
oder October 29, 2019 tue
. Ich habe es jetzt versucht.
Omar khayyam
persischen Mathematiker erfunden . Der persische Kalender hat 365 Tage (366 in einem Schaltjahr), aber der Mondkalender ist 11-12 Tage kürzer als der persische Kalender.