1、波斯日历与公历转换算法#if DISPLAY_FARSI_CALENDARtypedef struct MS_U8 weekday;MS_U8 day;MS_U8 month;MS_U16 year; Date_time;static MS_BOOL MApp_IsPersianYearLeap(MS_U32 year)return (year - (year 0) ? 474 : 473) % 2820) + 474) + 38) * 682) % 2816) = 1 & u8Month day;M = des-month;Y = des-year;MS_U8 R;/R = D;/ Jami
2、e shieldedMS_U16 inty;MS_U16 x12 = 0;/ x12年if (Y 2059) des-year = 2059;if (M 12) :des-month = 12;if (D MApp_GetDaysOfThisMonth(des-year, des-month) des-day = MApp_GetDaysOfThisMonth(des-year, des-month);R = des-day;if (M = 1 | M = 2)x12 = 622;else if (M = 3 & R 20)/ 31kx12 = 622;elsex12 = 621;inty =
3、 Y - x12;/ inty年1386年MS_U16 xxx = 1379, i = 0;/ xxx年BOOL m_ok;do i+;if (inty = xxx) m_ok = TRUE;break;elsem_ok = FALSE;xxx = xxx + 4;/ while (i 30);/ 30次if (m_ok = TRUE) if (R 31 & M = 1)R+;else if (R 28 & M = 2)R+;else if (R 31 & M = 3)R+;else if (R 30 & M = 4)R+;else if (R 31 & M = 5)R+;else if (R
4、 30 & M = 6)R+;else if (R 31 & M = 7)R+;else if (R 31 & M = 8)R+;else if (R 30 & M = 9)R+;else if (R 31 & M = 10)R+;else if (R 30 & M = 11)R+;else if (R 31 & M = 12)R+;else R = 1;M+;/ end if cabiseif (M = 1 & R =21 ) r = R - 20;m = 11;else if (M = 2 & R = 20) r = R - 19;m = 12;else if (M = 3 & R = 2
5、1) r = R - 20;m = 1;else if (M = 4 & R = 21) r = R - 20;m = 2;else if (M = 5 & R = 22) r = R - 21;m = 3;else if (M = 6 & R = 22) r = R - 21;m = 4;else if (M = 7 & R = 23) r = R - 22;m = 5;else if (M = 8 & R = 23) r = R - 22;m = 6;else if (M = 9 & R = 23) r = R - 22;m = 7;else if (M = 10 & R = 23) r
6、= R - 22;m = 8;else if (M = 11 & R = 22) r = R - 21;m = 9;else if (M = 12 & R = 22) r = R - 21;m = 10;int x = 0;if (M = 1 | M = 2)x = 622;else if (M = 3 & R day = r;/ return Daydes-month = m;/ return monthdes-year = Y;/ return Yearreturn TRUE;static int OutDateGregorian_k(Date_time *des)/ what = 0 D
7、ay 1Month 2 YearMS_U8 D, M;MS_U16 Y;/*D = des-day;M = des-month;Y = des-year;MS_U8 m = 0, r = 0;MS_U8 R = 0;R = D;if (M = 1 & R = 13) m = 4;r = R - 12;if (M = 2 & R = 12) m = 5;r = R - 11;if (M = 3 & R = 12) m = 6;r = R - 11;if (M = 4 & R = 11) m = 7;r = R - 10;if (M = 5 & R = 11) m = 8;r = R - 10;i
8、f (M = 6 & R = 11) m = 9;r = R - 10;if (M = 7 & R = 10) m = 10;r = R - 9;if (M = 8 & R = 11) m = 12;r = R - 10;if (M = 9 & R = 11) m = 12;r = R - 10;/-Y = Y + 621;if (M = 10 & R = 12) m = 1;r = R - 11;Y+;if (M = 11 & R = 13) m = 2;r = R - 12;Y+;if (M = 12 & R = 11) m = 3;r = R - 10;Y+;des-day = r;/
9、return Daydes-month = m;/ return monthdes-year = Y;/ return Yearreturn TRUE;int OutDateGregorian(Date_time *des) / what = 0Day 1Month 2YearMS_U8 D, M;MS_U16 Y;/*D = des-day;M = des-month;Y = des-year;MS_U8 m = 0, r = 0;MS_U8 R = 0;/*/printf(M = %d D = %d Y = %dn, M, D, Y);if (Y 2059) des-year = 2059
10、;/ return Yearreturn FALSE;if (M 12) des-month = 12;/ return monthif (D MApp_GetIranDaysOfMonth() des-day = 31;/ return Day*/int inty = Y;int xxx = 1379, i = 0;BOOL m_ok;do i+;if (inty = xxx) m_ok=TRUE;break;else m_ok = FALSE;xxx = xxx + 4;/-忧?呷碛?逖嶅茄忧?磉惹?- while (i 30);if (m_ok = TRUE) return OutDat
11、eGregorian_k(des);R = D;if (M = 1 & R = 12) m = 4;r = R - 11;if (M = 2 & R = 11) m = 5;r = R - 10;if (M = 3 & R = 11) m = 6;r = R - 10;if (M = 4 & R = 10) m = 7;r = R - 9;if (M = 5 & R = 10) m = 8;r = R - 9;if (M = 6 & R = 10) m = 9;r = R - 9;if (M = 7 & R = 9) m = 10;r = R - 8;if (M = 8 & R = 10) m = 12;r = R - 9;if (M = 9 & R = 10) m = 12;r = R - 9;/-Y = Y + 621;if (M = 10 & R = 11)m = 1;r = R - 10;Y+;if (M = 11 & R = 12) m = 2;r = R - 11;Y+;if (M = 12 & R = 10) m = 3;r = R - 9;Y+;des-day = r;/ return Daydes-month = m;/ return monthdes-year = Y;/ return Yearreturn TRUE;#endif
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1