Tengo trabajo en muchos proyectos con conversiones de fechas. por ejemplo, trabajo en el calendario solar y cómo convertirlos a fechas gregorianas y viceversa. El calendario solar (calendario persa) es casi similar a la fecha gregoriana en términos de la cantidad de días en un año [salto o no]. 
 
Pero recientemente trabajé en un proyecto con el calendario lunar. A medida que investigo sobre el calendario lunar, me di cuenta de que no hay ningún método lógico único para convertir el sistema lunar a solar (al menos hasta donde yo sé). 
Aquí hay algunos enlaces de referencias que investigué sobre ellos:
- No se puede convertir de la fecha Hijri a la fecha gregoriana (c #) 
 - Convertir la fecha del calendario Hijri al calendario gregoriano y viceversa
 - Hijri Date To gregorian usando DateTime.Parse 
 - Convertir fecha Hijri a dat gregoriano
 
Cuando seguí los enlaces anteriores, la capacitación y las pruebas de las personas presentaron algoritmos, noté que ninguno de ellos es absolutamente correcto.
Baste decir, solo convierta "1441/02/30" [Safar 30th]a la fecha gregoriana en cada método que desee probar.
La siguiente imagen es útil para el ejemplo mencionado anteriormente.

Puse aquí algunos códigos de prueba y falla:
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();
El error para el código anterior:
El DateTime representado por la cadena no se admite en el calendario System.Globalization.HijriCalendar.
HijriCalendar hc = new HijriCalendar();
DateTime date = new DateTime(1441, 2, 30, hc);
return date.ToString();
El error para el código anterior:
 
"El día debe ser entre 1 y 29 para el mes 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();
El error para el código anterior:
 
"El día debe ser entre 1 y 29 para el mes 2".
Después de eso, estaba tratando de entender que ¿hay algún algoritmo para implementar la fecha de conversión de Hijri a la fecha gregoriana?   
¡Así que probé un conversor de fechas islámico en línea y me sorprendió! 
Solo intente ingresar "1441/2/30"en ambos convertidores de fecha. 
el primero regresa October 30, 2019
y el segundo regresa 29 October 2019 
Hijri gregorian-converter convertidor de   
fecha islámico - Gregorian Calendar Converter 
Así que no sé si hay algún algoritmo real para convertir las fechas de Hijri a gregoriano. 
 
Gracias de antemano por tu tiempo.
Para obtener más información, https://www.wikiwand.com/simple/Islamic_calendar
Actualización : Sé que no hay ninguna biblioteca correcta para saber. pero si alguien tiene conocimiento o detalles sobre el Calendario Hijri (toda su interfaz), simplemente describa aquí. Realmente quiero implementar un calendario Hijri para todos.

October 30, 2019 wedoOctober 29, 2019 tue. Lo intenté ahora.Omar khayyamel matemático persa. El calendario persa tiene 365 días (366 en un año bisiesto), pero el calendario lunar es 11-12 días menor que el calendario persa.Respuestas:
Puede usar algo como este código para convertir y analizar cadenas de calendario hijri a gregoriano DateTime.
fuente
Day must be between 1 and 29 for month 2. Parameter name: day. Como discutimos antes en los comentarios de mi publicación, El Safar de otro mes Hijri (lunar) tiene un recuento de días variables. su solución tiene el mismo error similar a otras soluciones.