陽曆與陰曆我國通常使用的紀年方法。陽曆又叫公曆,陰曆又叫農曆。外事用陽曆,以與國際接軌,內事用陰曆,以合國人習慣。不過現在農曆大只使用在一些節日和祭祀活動中,而公曆的應用卻越來越廣泛。由於地球繞太陽轉一周是365.2422,如果按公轉一圈為一年,那麼無**歷還是農曆都無法非常精確的表示一年。所以農曆平年十二個月,大月三十天,小月二十九天,全年354天或355天(一年中哪個月大,哪個月小,年年不同)。由於每年的天數比太陽年約差十一天,所以在十九年裡設定七個閏月,有閏月的年份全年383天或384天。而陽曆卻比較簡單,平年365天,四年一閏,閏年366天。他們表達都不如干支紀年表示準確,因為干支紀年是按照二十四節氣來劃分的,而二十四節又是地球公轉軌道的360度按二十四份等分得來。由於農曆自身的特點,所以農曆大約只使用在節日或者祭祀活動中。同樣由於相同的原因,公曆和農曆的轉換比較麻煩,因為農曆閏月實在太不固定了,一般是國家機構或者天文台推算一百到二百年的公曆農對應歷資訊供人參考使用。這裡使用台灣一家天文台提供的換算資訊,我把他處理成陣列,以供呼叫。該陣列使用17個bit來表示陰曆每年資訊。最低四個bit表示該年閏月是閏哪個月,接下來的中間12個bit表示每月是大月還是小月,第十七個bit表示該年有沒有閏年。轉換演算法也很簡單,公曆轉農曆,計算陽曆某年月日到2023年的天數,然後推算出陰曆哪個日期與1900相差的天數與陽曆相同,兩者即為同一天。農曆轉陰曆演算法同理。
#include "stdafx.h"
#include "calendar.h"
#include
//使用4個byte儲存,最高兩個byte的最低bit儲存閏月大小,剩下兩個byte的高十二個bit儲存大小月資訊,低四個bit存閏的月份,1900-2100
dword calendar::lunarinfo=;
uint calendar::solarmonth=;
//農曆y年的總天數,先按小月29天算,得出日期348,加上大月多出的1天,再加上閏月天數
uint calendar::lyeardays(uint y)
return(sum+leapdays(y));
}//傳回農曆 y年閏月的天數
uint calendar::leapdays(uint y)
else
}// 傳回農曆 y年閏哪個月 1-12 , 沒閏傳回 0
uint calendar::leapmonth(uint y)
//傳回農曆 y年m月的總天數
uint calendar::monthdays(uint y,uint m)
//獲得陽曆某年月日與2023年相差的天數
long calendar::ldaysfrom1900(mydate date)
}return days;
}//輸入陽曆日期,返回陰曆日期
mydate calendar::lunar(mydate date,mydate *retdate )
if(offset<0)
retdate.year = i;
leap = leapmonth(i);
bool isleap = false;
for(i=1; i<13 && offset>0; i++)
else
if(isleap==true && i==(leap+1))
offset -= temp;
}if(offset==0 && leap>0 && i==leap+1)
else
}if(offset<=0)
retdate.month = i;
retdate.day = offset ;
retdate.hour = date.hour;
retdate.isrunyue=isleap;
return retdate;
}
VC陰陽曆轉化與二十四節氣
地公轉軌道是乙個以太陽為乙個中心點的橢圓。以近日點為0度,將地球公轉所掃過的角度每十五度的界點所在日期便是乙個節氣。要計算某年某個節氣在這一年的日期。需要獲得這個節氣在這一年經歷的時間。於是就得下面這個陣列 static const int terminfo 這個陣列每乙個元素是各個節氣距離一年起點...
轉換 php PHP陰曆陽曆轉換
功能 公曆 農曆轉換 轉換成中文日期格式 計算農曆相隔天數 根據陰曆年獲取生肖 獲取陰曆月份的天數 獲取農曆每年的天數 獲取閏月 計算陰曆日期與正月初一相隔的天數 計算2個公曆 陽曆 日期之間的天數 根據距離正月初一的天數計算陰曆日期 獲取天干地支紀年等,php日期操作類 lunar.class.p...
python實現農曆和陽曆日期轉換
需安裝sxtwl包,命令如下 pip install sxtwl 農曆 lunar calendar 陽曆 solar calendar 轉換 如下 基於python3 import sxtwl 日曆中文索引 ymc u 十一 u 十二 u 正 u 二 u 三 u 四 u 五 u 六 u 七 u 八...