J'ai travaillé sur de nombreux projets avec des convertisseurs de date. par exemple, je travaille sur le calendrier solaire et comment les convertir en dates grégoriennes et vice versa. Le calendrier solaire (calendrier persan) est presque similaire à la date grégorienne en termes de nombre de jours dans une année [saut ou non].
Mais j'ai récemment travaillé sur un projet avec le calendrier lunaire. En faisant des recherches sur le calendrier lunaire, j'ai réalisé qu'il n'y avait pas de méthode logique unique pour convertir le système lunaire en solaire (du moins pour autant que je sache).
Voici quelques liens de références que j'ai recherchés sur eux:
- Impossible de convertir la date hégirienne en date grégorienne (c #)
- Convertir la date du calendrier Hijri en calendrier grégorien et vice versa
- Hijri Date To grégorien utilisant DateTime.Parse
- Convertir la date de Hijri en dat grégorien
En suivant les liens ci-dessus, en formant et en testant des algorithmes présentés par des personnes, j'ai remarqué qu'aucun d'entre eux n'est absolument correct.
Qu'il suffise de dire, il suffit de convertir "1441/02/30" [Safar 30th]
en date grégorienne chaque méthode que vous souhaitez essayer.
L'image suivante est utile pour l'exemple susmentionné.
J'ai mis ici mes quelques codes de test et échoue:
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'erreur pour le code ci-dessus:
Le DateTime représenté par la chaîne n'est pas pris en charge dans le calendrier System.Globalization.HijriCalendar.
HijriCalendar hc = new HijriCalendar();
DateTime date = new DateTime(1441, 2, 30, hc);
return date.ToString();
L'erreur pour le code ci-dessus:
"Le jour doit être compris entre 1 et 29 pour le mois 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'erreur pour le code ci-dessus:
"Le jour doit être compris entre 1 et 29 pour le mois 2."
Après cela, j'essayais de comprendre qu'il existe un algorithme pour déployer la date de conversion Hijri en date grégorienne?
J'ai donc testé un convertisseur de date en ligne islamique et j'ai été surpris!
Essayez simplement d'entrer "1441/2/30"
sur les deux convertisseurs de date.
le premier retourne October 30, 2019
et le second retourne 29 October 2019
Hijri gregorian-converter
Islamic Date Converter - Grégorien Calendar Converter
Je ne sais donc pas s'il existe un véritable algorithme pour convertir les dates Hijri en grégorien.
Merci d'avance pour votre temps.
Pour plus d'informations, https://www.wikiwand.com/simple/Islamic_calendar
Mise à jour : je sais qu'il n'y a pas de bibliothèque correcte pour savoir. mais si quelqu'un a des connaissances ou des détails sur le calendrier Hijri (toute son interface), veuillez simplement décrire ici que je veux vraiment déployer un calendrier Hijri pour tous.
October 30, 2019 wed
ou October 29, 2019 tue
. J'ai essayé maintenant.
Omar khayyam
le mathématicien persan. Le calendrier persan a 365 jours (366 dans une année bissextile) mais le calendrier lunaire est 11-12 jours de moins que le calendrier persan.