Ho lavorato su molti progetti con convertitori di date. ad esempio, lavoro sul calendario solare e su come convertirli in date gregoriane e viceversa. Il calendario solare (calendario persiano) è quasi simile alla data gregoriana in termini di numero di giorni in un anno [salto o no].
Ma di recente ho lavorato a un progetto con il calendario lunare. Mentre eseguo ricerche sul calendario lunare, mi sono reso conto che non esiste un singolo metodo logico per convertire il sistema lunare in solare (almeno per quanto ne so).
Ecco alcuni link di riferimento che ho studiato su di essi:
- Impossibile convertire da Hijri Date a data gregoriana (c #)
- Convertire la data dal calendario Hijri in calendario gregoriano e viceversa
- Hijri Date Per gregorian usando DateTime.Parse
- Convertire la data di Hijri in dat gregoriano
Mentre seguivo i link sopra, la formazione e il test delle persone hanno presentato algoritmi, ho notato che nessuno di loro è assolutamente corretto.
Basti dire, basta convertire "1441/02/30" [Safar 30th]
in data gregoriana che ogni metodo che si desidera provare.
L'immagine seguente è utile per l'esempio di cui sopra.
Ho messo qui i miei codici di prova e non riesco:
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();
L'errore per il codice sopra:
Il DateTime rappresentato dalla stringa non è supportato nel calendario System.Globalization.HijriCalendar.
HijriCalendar hc = new HijriCalendar();
DateTime date = new DateTime(1441, 2, 30, hc);
return date.ToString();
L'errore per il codice sopra:
"Il giorno deve essere compreso tra 1 e 29 per il mese 2."
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();
L'errore per il codice sopra:
"Il giorno deve essere compreso tra 1 e 29 per il mese 2."
Dopo ciò, stavo cercando di capire che esiste un algoritmo per distribuire la data di conversione di Hijri in data gregoriana?
Quindi ho testato un convertitore di date online islamico e sono rimasto sorpreso!
Prova a inserire "1441/2/30"
entrambi i convertitori di data.
il primo che ritorna October 30, 2019
E il secondo che ritorna 29 October 2019
Hijri gregorian-converter
Convertitore di date islamico - Gregorian Calendar Converter
Quindi non so che esiste un vero algoritmo per convertire le date Hijri in gregoriano.
Grazie in anticipo per il tuo tempo.
Per maggiori informazioni, https://www.wikiwand.com/simple/Islamic_calendar
Aggiornamento : so che non esiste alcuna libreria corretta per sapere. ma se qualcuno ha conoscenza o dettagli sul calendario Hijri (tutta la sua interfaccia), per favore, descrivi qui che voglio davvero distribuire un calendario Hijri per tutti.
October 30, 2019 wed
o October 29, 2019 tue
. Ci ho provato adesso.
Omar khayyam
matematico persiano. Il calendario persiano ha 365 giorni (366 in un anno bisestile) ma il calendario lunare è di 11-12 giorni inferiore al calendario persiano.