波斯日历与公历转换算法.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
波斯日历与公历转换算法

#if DISPLAY_FARSI_CALENDAR typedef 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) 682; } MS_U8 MApp_GetIranDaysOfMonth(MS_U16 u16Year, MS_U8 u8Month) { if (u8Month = 1 u8Month = 12) { return ((MApp_IsPersianYearLeap(u16Year) u8Month == 12) ? 30 : IranSolarMonth[u8Month - 1]); } else { return 0; } } // Convert MJD to Jalali int OutDateLeap(Date_time *des) { MS_U8 D, M; MS_U16 Y; MS_U8 r = 0, m = 0; D = des-day; M = des-month; Y = des-year; MS_U8 R; //R = D; // Jamie shielded MS_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) // 31k x12 = 622; else x12 = 621; inty = Y - x12; // inty 年 1386 年 MS_U16 xxx = 1379, i = 0; // xxx 年 BOOL m_ok; do { i++; if (inty == xxx) { m_ok = TRUE; break; } else{ m_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 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 cabise if (M == 1 R 21) { r = R + 10; m = 10; } else if (M == 1 R =21 ) { r = R - 20; m = 11; } else if (M == 2 R 20) { r = R + 11; m = 11; } else if (M == 2 R = 20) { r = R - 19; m = 12; } else if (M == 3 R 21) { r = R + 9; m = 12; }

文档评论(0)

me54545 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档