久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4585|回復: 0
打印 上一主題 下一主題
收起左側

農歷轉換問題請教

[復制鏈接]
跳轉到指定樓層
樓主
ID:15037 發表于 2011-2-2 00:43 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

農歷轉換問題請教

本轉換程序1-9月農歷顯示都是正確的,就是10-12月農歷顯示不正確,請教各位,謝謝先。

void Conversion(void)
/*==轉換當前農歷信息====================================*/
{  
unsigned char year,month,day,temp1,temp2,temp3,month_p;
unsigned int temp4,code_addr;
bit flag_y;   // flag2,
 
    year =((nian/16)*10+nian%16)&0x7f;   //加載年月日數據,如為BCD則需轉為十進制 
    month=((yue/16)*10+yue%16);
    day=((ri/16)*10+ri%16);
 
    code_addr=year-1;   //定位數據表地址     
    if(((nian/16)*10+nian%16)>>7==0)
    code_addr+=100;
    code_addr*=3;

    temp1=(year_code[code_addr+2]&0x60)>>5; //取當年春節所在的公歷月份  
    temp2=year_code[code_addr+2]&0x1f;   //取當年春節所在的公歷日  
    temp3=temp2-1;       //計算當年春節離當年元旦的天數,春節只會在公歷1月或2月
 
    if(temp1!=1)
   temp3+=31;     //如果不在1月則天數加上31天(1月)
    if(month<10)
    {temp4=day_code1[month-1]+day;}
    else
   {temp4=day_code2[month-10]+day;}

    if((month<=2)||(year%0x04!=0))
   temp4-=1; //如果公歷月小于等于2月或者該年的2月非閏月,天數減1   
   
    temp2=(year_code[code_addr]&0xf0)>>4; //從數據表中取該年的閏月月份,如為0則該年無閏月
 
 if (temp4>=temp3)      //判斷公歷日在春節前還是春節后
   {
        //公歷日在春節后或就是春節當日使用下面代碼進行運算
    temp4 -=temp3;
    month  = 1;       
    flag_y = 0;
    month_p= 1;  //month_p為月份指向,公歷日在春節前或就是春節當日month_p指向首月
    temp1=get_moon_day(month_p,code_addr); //檢查該農歷月為大小還是小月,大月返回1,小月返回0
       
  while(temp4>=temp1)
            {
             temp4-=temp1;
             month_p+=1;
            if(month==temp2)
              {
               flag_y=~flag_y;
               if(flag_y==0)
         month+=1;
               }
            else
            {month+=1;}

           temp1=get_moon_day(month_p,code_addr);
            }
         day=temp4+1;
    }
    else
      { 
        //公歷日在春節前使用下面代碼進行運算
         temp3-=temp4;
         if(year==0)
    {year=0xe3;}
   else
    {year-=1;}


        code_addr-=3;
        month  = 12;
        flag_y = 0;
        if(temp2==0)
  {month_p=12;}
  else
   {month_p=13;} //如果當年有閏月,一年有十三個月,月指向13,無閏月指向12    
     
        temp1=get_moon_day(month_p,code_addr);
        while(temp3>temp1)
          {
            temp3-=temp1;
            month_p-=1;
            if(flag_y==0)
       month-=1;
            if(month==temp2)
       flag_y=~flag_y;
            temp1=get_moon_day(month_p,code_addr);
          }
         day=temp1-temp3+1;
    }

   Tim[0] = year|(((nian/16)*10+nian%16)&0x80);    //將農歷信息寫進指定變量
   Tim[1] = month;
   Tim[2] = day;
  // Conver_week();        //最后進行星期轉換(根據需要自行選用)
}

unsigned char get_moon_day(unsigned char   month_p,unsigned int code_addr)/*讀取數據表中農歷月的大月或小月,如果該月大返回1,小返回0*/
{
  unsigned char temp,temp5;


  temp=0x80>>((month_p+3)%8);
  temp5=(month_p+3)/8;
  temp=year_code[code_addr+temp5]&temp;
 if(temp==0)
   return(29);
  else
  return(30);

 }

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲v日韩v综合v精品v | 国产蜜臀 | 色眯眯视频在线观看 | 日韩av一区二区在线观看 | 久久国产成人 | 久久久.com | 精品久久99 | 国产精品国产三级国产aⅴ中文 | 国产9 9在线 | 中文 | 国产精品久久久久久一级毛片 | 久草免费在线视频 | 干出白浆视频 | 欧美视频精品 | 亚洲一区不卡在线 | 日本网站在线看 | 好姑娘高清在线观看电影 | 国产精品1区2区3区 男女啪啪高潮无遮挡免费动态 | 成人黄色在线视频 | 免费的网站www| 国产精品a级 | 久久中文字幕一区 | 成人欧美一区二区三区视频xxx | 国产一区二区在线免费观看 | 欧美一区二区在线观看 | 国产成人精品一区二区三区 | 在线观看中文字幕 | 特黄特色大片免费视频观看 | 成年人视频在线免费观看 | com.国产 | 午夜激情网 | 日韩精品一区二区三区在线观看 | 在线看av的网址 | 91av视频在线播放 | 美女操网站 | 成人网av | 999热精品 | 国产精品99久久久久久动医院 | 精品视频亚洲 | 日韩伦理一区二区三区 | 美女久久久久 | 亚洲久久一区 |