“易语言.飞扬”公历转农历源码,作者ganjun3000

ganjun3000:网上找的c++源码,转换为EF。

完整源码请到论坛下载:http://bbs.dywt.com.cn/dispbbs.asp?boardID=148&ID=147498&page=1

 

以下是部分核心代码:

公开 类 万年历
{
    
// ====================================================================
    公开 静态 整数 取农历年天数(整数 农历年份) // 取某农历年份的总天数
    {
        整数 i, sum 
=   348
        
for (i = 0x8000 ; i > 0x8 ; i >>= 1 )
        {
            sum 
+=  选择(农历信息[农历年份 - 1900 &  i,  1 0 );
        }
        返回(sum
+ 取农历闰月天数(农历年份));
    }
    
// ====================================================================
    公开 静态 整数 取农历闰月天数(整数 农历年份) // 取某农历年份闰月的天数
    {
        
if (取农历闰月(农历年份) != 0 )
            返回 选择(农历信息[农历年份
- 1900 &   0x10000 30 29 );
        
else
            返回 
0 ;
    }
    
// ====================================================================
    公开 静态 整数 取农历闰月(整数 农历年份) //  取某农历年份闰哪个月 1-12 , 没闰传回 0
    {
        返回 农历信息[农历年份
- 1900 &   0xf ;
    }
    
// ====================================================================
    公开 静态 整数 取农历月天数(整数 农历年份,整数 农历月份) // 取某农历年份的某月的总天数
    {
        返回 选择( 农历信息[农历年份
- 1900 &  ( 0x10000 >> 农历月份),  30 29 );
    }
    
// ====================================================================
    公开 静态 日期 取农历日期(日期 公历日期) //  把公历日期转换为农历日期 
    {
        整数 offset;
        整数 i, leap
= 0 , temp = 0 ;
        日期 返回日期 
=   new  日期();

        offset
= 取相差天数(公历日期) - 30 ;

        
for (i = 1900 ; i < 2050   &&  offset > 0 ; i ++ )
        {
            temp 
=  取农历年天数(i);
            offset 
-=  temp;
        }

        
if (offset < 0 )
        {
            offset 
+=  temp;
            i
-- ;
        }

        返回日期.年 
=  i;

        leap 
=  取农历闰月(i);
        bool isLeap 
=  假;

        
for (i = 1 ; i < 13   &&  offset > 0 ; i ++ )
        {
            
if (leap > 0   &&  i == (leap + 1 &&  isLeap == 假)
            {
                i
-- ;
                isLeap 
=  真;
                temp 
=  取农历闰月天数(返回日期.年);
            }
            
else
            {
                temp 
=  取农历月天数(返回日期.年, i);
            }
            
if (isLeap == 真  &&  i == (leap + 1 )) 
            {
                isLeap 
=  假;
            }
            offset 
-=  temp;
        }
        
if (offset == 0   &&  leap > 0   &&
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值