阳历到阴历的转换,第1张

阳历到阴历的转换,第2张

/*

农历转换程序
原型:int calconv(struct conv date *);

struct conv date
{
int Source;==0,输入日期是公历!=0,输入是农历
int solary ear;或者输入公历年
int solar month;西历月
int solar date;公历
int lunar year;或者输入农历年
int LunarMonth;农历
int lunar date;农历日
int Weekday;星期几(0==星期日,1==星期一,...)
int Kan;那一天,是干的(0== A,1== B,...,9==癸烷)
int Chih;日地支(0==子,1==丑,...,11 = = hai)
};

调用时,必须设置Souce的值。如果是0,就从西历改阴历,否则就从阴历改西历。然后,可以设置西历或阴历的日期作为输入。转换后的日期将填入结构(农历或西历)和星期几、天干地支。如果函数返回值为0,则没有错误,1为输入年份错误,2为输入月份错误。3输入的日期错误。
输入的西历年份必须在1937年和2031年之间
输入的阴历年份必须在1936年和2030年之间
如果需要扩展,请添加LunarCal[]

*/

# define first year 1936/* lunar cal的第一年[] */

struct conv date
{
int Source;
int solary ear;
int solar month;
int solar date;
int lunar year;
int lunar month;
int lunar date;
int Weekday;
int Kan;
int Chih;
};

struct tagLunarCal
{
int baseds;/*西历1月1日至农历正月初一的累计天数*/
int交集;/*闰月。0==今年*/
int基准周中没有闰月;/*今年1月1日是星期几,减1 */
int basekanchi;/*本年公历1月1日分行数减1 */
int month days[13];/*本农历年各月的大小,0==小月(29日),1==大月(30日)*/
};

struct taglunar cal lunar cal[]= {
{ 23,3,2,17,1,0,0,1,0,0,1,0,1,1,1,1,1,1936 */
{ 41,0,4,23,1,0,0,0,1,0,0,1,1,1 },
{ 30,7,5,28,1,1 1,1 },
{ 38,0,0,38,1,1,0,1,0,0,1,0,0,0,1,0,0,1 },/* 1940 */
{ 26,6,2,44,1,1,0,0,1,0,0,0 },
{ 45,0,3,49,1,0,1,0,0,0,0,1 1 },
{ 24,4,5,59,1,0,1,0,0,1,0,0,0,1,1 },/* 1944 */
{ 43,0,0,0,5,0,0,1,0,0,0,1,1,1 },
{ 32,0,0,1,10,1,0,0,0,1,0,0,1 1 },
{ 40,0,3,20,1,0,1,0,1,0,0,1,0,1,0,1,0,1,1 },/* 1948 */

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 阳历到阴历的转换

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情