Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

How to convert between calendars? Here is what I have:

UmAlQuraCalendar hijri = new UmAlQuraCalendar();
GregorianCalendar cal = new GregorianCalendar();

DateTime hijriDate = new DateTime(1434, 11, 23, hijri);
DateTime gregorianDate = ...; //

I need a gregorianDate that corresponds to the hijriDate.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
174 views
Welcome To Ask or Share your Answers For Others

1 Answer

A DateTime can accept input in its constructor with an alternative calendar, but internally it is always stored using the Gregorian equivalent. So you already have what you are looking for.

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

Going the other direction, you have to get the parts using the methods on the calendar object.

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...