Я працюю над багатьма проектами з перетворенням дат. наприклад, я працюю над сонячним календарем і як їх перетворити на григоріанські дати і навпаки. Сонячний календар (персидський календар) майже схожий на григоріанську дату за кількістю днів у році [стрибок чи ні].
Але я нещодавно працював над проектом з місячним календарем. Під час дослідження місячного календаря я зрозумів, що не існує жодного логічного методу перетворення місячної системи в сонячну (принаймні, наскільки я знаю).
Ось декілька посилань, які я досліджував на них:
- Неможливо перетворити з дати "Хіджрі" на "Григоріанську дату" (c #)
- Перетворіть дату з календаря гіджрі в григоріанський календар і навпаки
- Hijri Date Для григоріанського, використовуючи DateTime.Parse
- Перетворити дату Хіджі в григоріанський дат
Коли я дотримувався вищезазначених посилань, навчання та тестування людей, що представляли алгоритми, я помітив, що жоден з них не є абсолютно правильним.
Досить сказати, просто перетворіть "1441/02/30" [Safar 30th]
на григоріанську дату кожен метод, який ви хочете спробувати.
Наступне зображення є корисним для вищезгаданого прикладу.
Я ставлю сюди свої тестові коди та помилки:
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();
Помилка вищевказаного коду:
DateTime, представлений рядком, не підтримується в календарі System.Globalization.HijriCalendar.
HijriCalendar hc = new HijriCalendar();
DateTime date = new DateTime(1441, 2, 30, hc);
return date.ToString();
Помилка вищевказаного коду:
"День повинен бути від 1 до 29 для другого місяця."
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();
Помилка вищевказаного коду:
"День повинен бути від 1 до 29 для другого місяця."
Після цього я намагався зрозуміти, що існує алгоритм розгортання дат перетворення Hijri в дату григоріанської?
Тож я тестую деякий ісламський онлайн-конвертер дат і мене здивувало!
Просто спробуйте ввести "1441/2/30"
обидва перетворювачі дат.
перший, що повертається, October 30, 2019
а другий, що повертається, 29 October 2019
іджикський григоріанський перетворювач ісламських перетворювачів
дат
Тож я не знаю, чи існує якийсь реальний алгоритм перетворення дат Хіджі на григоріанські.
Заздалегідь дякую за ваш час.
Для отримання додаткової інформації https://www.wikiwand.com/simple/Islamic_calendar
Оновлення : Я знаю, що немає жодної правильної бібліотеки для ноу-хау. але якщо хтось має знання або детальну інформацію про календар Хіджі (весь його інтерфейс), будь ласка, просто опишіть тут, я дійсно хочу розгорнути календар Hidri для всіх.
October 30, 2019 wed
або October 29, 2019 tue
. Я спробував зараз.
Omar khayyam
перським математиком. Перський календар має 365 днів (366 у високосний рік), але місячний календар на 11-12 днів менше, ніж у перського календаря.