날짜 변환이있는 많은 프로젝트에서 일하고 있습니다. 예를 들어, 나는 태양 달력과 그레고리력 날짜로 변환하는 방법과 그 반대의 방법으로 작업합니다. 태양력 달력 (페르시아 력)은 그레고리력 날짜와 거의 비슷합니다.
그러나 최근에는 음력 달력으로 프로젝트를 진행했습니다. 음력을 연구하면서 음력 시스템을 태양으로 변환하는 논리적 방법이 하나도 없다는 것을 깨달았습니다 (최소한 아는 한).
여기에 내가 조사한 참고 문헌 링크가 있습니다.
- Hijri Date에서 Gregorian 날짜 (C #)로 변환 할 수 없습니다
- Hijri Calendar에서 Gregorian Calendar로 날짜를 변환하거나 그 반대로
- DateTime.Parse를 사용하여 Hijri 날짜를 gregorian
- Hijri 날짜를 Gregorian dat로 변환
위의 링크, 교육 및 테스트 사람들이 제시 한 알고리즘을 따라 가면서 절대적으로 올바른 것은 없다는 것을 알았습니다.
말하자면, "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();
위의 코드에 대한 오류 :
"2 월은 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();
위의 코드에 대한 오류 :
"2 월은 1 일에서 29 일 사이 여야합니다."
그 후, 변환 Hijri 날짜를 Gregorian 날짜로 배포하는 알고리즘이 있다는 것을 이해하려고했습니다.
그래서 나는 이슬람 온라인 날짜 변환기를 테스트하고 놀랐습니다! 두 날짜 변환기에 모두
입력하십시오 "1441/2/30"
.
첫 번째 반환 October 30, 2019
및 두 번째 반환 29 October 2019
Hijri gregorian-converter
이슬람 날짜 변환기-Gregorian Calendar Converter
그래서 나는 Hijri 날짜를 Gregorian로 변환하는 실제 알고리즘이 무엇인지 모른다.
시간 내 주셔서 감사합니다.
자세한 내용은 https://www.wikiwand.com/simple/Islamic_calendar
업데이트 : 올바른 라이브러리가 없다는 것을 알고 있습니다. 그러나 누군가가 Hijri Calendar (모든 인터페이스)에 대한 지식이나 세부 사항을 알고 있다면 여기에 설명하십시오.
October 30, 2019 wed
또는 이어야합니다 October 29, 2019 tue
. 나는 지금 시도했다.
Omar khayyam
페르시아 수학자가 발명했습니다 . 페르시아 력은 365 일 (윤년에는 366)이지만 달 음력은 페르시아 력보다 11-12 일 짧다.