DateTime
może zaakceptować wkład w jej konstruktora z alternatywnym kalendarzu, ale wewnętrznie jest zawsze przechowywany przy użyciu odpowiednika gregoriańskiego. Więc już masz to, czego szukasz.
Calendar umAlQura = new UmAlQuraCalendar();
DateTime dt = new DateTime(1434, 11, 23, umAlQura);
// As a string, it will format with whatever the calendar for the culture is.
Debug.WriteLine(dt.ToString("d", CultureInfo.InvariantCulture)); // 09/29/2013
Debug.WriteLine(dt.ToString("d", new CultureInfo("ar-SA"))); // 23/11/34
// But the individual integer properties are always Gregorian
Debug.WriteLine(dt.Year); // 2013
Debug.WriteLine(dt.Month); // 9
Debug.WriteLine(dt.Day); // 29
Idąc w przeciwnym kierunku, musisz uzyskać części za pomocą metod na obiekcie kalendarza.
DateTime dt = new DateTime(2013, 9, 29); // Gregorian
Calendar umAlQura = new UmAlQuraCalendar();
Debug.WriteLine(umAlQura.GetYear(dt)); // 1434
Debug.WriteLine(umAlQura.GetMonth(dt)); // 11
Debug.WriteLine(umAlQura.GetDayOfMonth(dt)); // 23
To może być pomocne: http://stackoverflow.com/questions/11893047/converting-calendars –