网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
公历农历相互转换的算法及其VCL实现
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式
农历年月日时

   __property int cYear={read=FcYear,write=SetcYear};

   __property int cMonth={read=FcMonth,write=SetcMonth};

   __property int cDay={read=FcDay,write=SetcDay};

   __property int cTime={read=FcTime,write=SetcTime};

   //公历农历日期字符串

   __property AnsiString DateString={read=GetDateString};

   __property AnsiString cDateString={read=GetcDateString};

   //其他属性

   __property TDateTime DateTime={read=TheDate,write=SetDate};

   __property TDateTime LastJie  = { read=GetLastJie };

   __property TDateTime NextJie  = { read=GetNextJie };

   __property TDateTime LastQi  = { read=GetLastQi };

   __property TDateTime NextQi  = { read=GetNextQi };

   __property int DayOfWeek  = { read=GetDayOfWeek };

   __property AnsiString WeekString  = { read=GetWeekString };

__published:

};

//---------------------------------------------------------------------------

#endif

下面介绍转换的具体算法。

一、公历转换成农历

1、计算出所求时间到起始年正月初一的天数。

2、从起始年份开始,减去每一月的天数,一直到剩余天数没有下一个月多为止

此时,ChineseCalendarData的下标到了多少,就是减去了多少年,用起始年份加上这个下标就可以得到农历年份;然后看减去了几个月,如果本年不闰月或者闰月还在后面,就可以直接得到农历月份,如果在闰月月份数后面一个月,则这个月就是闰月,如果在闰月的后面,则要减去1才能得到月份数;剩余的天数就是农历日;农历时用(公历时+1)/2就可以简单地得到了。具体的代码如下:

//---------------------------------------------------------------------------

void __fastcall ThsDivineCalendar::e2c()

{

        int total,m,n,k;

        bool isEnd=false;    //用以判断是否不够减了

        total=(int)TheDate-7709;     //到1921-2-8(正月初一)的天数

        for(m=0;;m++)

        {

/*判断本年是否闰月,用以确定月份信息的起点

  有闰月有13位(0~12),无12位(0~11)*/

k=(ChineseCalendarData[m]<0xfff)?11:12; for(n=k;n>=0;n--)

                {

                                          //如果不够减

                        if(total<=29+GetBit(ChineseCalendarData[m],n))

{

isEnd=true; //设置标志

break; //退出内层循环

}

/*够减,减去一个月的天

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号