我在使用Um al Qura日曆獲取C#DateTime對象的日,月和年組件時遇到問題。將公曆日期轉換爲Um al Qura時丟失一天
的代碼片段是:
DateTime date = new DateTime(2013, 6, 24);
UmAlQuraCalendar umAlQuraCalendar = new UmAlQuraCalendar();
int year = umAlQuraCalendar.GetYear(date);
int month = umAlQuraCalendar.GetMonth(date);
int day = umAlQuraCalendar.GetDayOfMonth(date);
運行在這之後,今年是1434和月份是8,這兩者都是正確的。然而,一天是14這是不對的(按這裏:http://www.al-habib.info/islamic-calendar/islamic-calendar-ummulqura-2013.htm)
如果我的代碼更改爲:
DateTime date = new DateTime(2013, 6, 24, 0, 0, 0, 1); // i.e. One millisecond after midnight
UmAlQuraCalendar umAlQuraCalendar = new UmAlQuraCalendar();
int year = umAlQuraCalendar.GetYear(date);
int month = umAlQuraCalendar.GetMonth(date);
int day = umAlQuraCalendar.GetDayOfMonth(date);
然後一天是15,這是正確的。
爲了讓事情變得更加複雜,這段代碼處於一個大型應用程序的深處:C#代碼是從VB6 exe中調用的。
如果我將上面的第一個代碼片段提取到獨立的C#項目(.NET 2.0)中,那麼day是15,這是正確的。
我已經檢查了一切,我可以想到,這兩個項目之間可能會有所不同:.NET版本,Platform目標(x86),但看不到任何明顯的東西。
任何想法非常感謝。
總是你可以調整回教日曆,因爲計算有時不準確,當計算機說明天不是齋月的第一天,並且人們在一天結束時看到月亮,那麼計算將改變以同步實際日曆,回教日曆不應該由等式計算,它是通過月亮的外觀來計算的。在地區和語言設置的控制面板中,如果您選擇回教日曆,您可以設置回教日的調整 – ahmedsafan86
是的,這是我對Hijri日曆的理解,但我使用的是Um al Qura日曆(http:///msdn.microsoft.com/en-us/library/system.globalization.umalquracalendar(v = vs.80).aspx),它沒有調整因子。 –