📄 yinli.c
字号:
/**********************************************
本程序用于阳历到阴历的转换
入口:(阳历)欲返回字符串(长度20) 年 月 日
返回:(阴历)月 日
限于:1900年1月31日到2030年12月31日
***********************************************/
#include "stdio.h"
const int mon[][14]={ /*1900 至 2030 的阴历月份数据。mon[][0]
至mon[][12]为每月的天数,mon[][13]为该年的闰月*/
29, 30, 29, 29, 30, 29, 30, 30, 29, 30, 30, 29, 30, 8,
29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 30, 29, 0, 0,
30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 30, 0, 0,
29, 30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 30, 5,
30, 30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 0, 0,
30, 30, 29, 30, 30, 29, 29, 30, 29, 30, 29, 30, 0, 0,
29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 30, 4,
29, 30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 0, 0,
30, 29, 29, 30, 30, 29, 30, 29, 30, 30, 29, 30, 0, 0,
29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 30, 29, 30, 2,
29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 30, 29, 0, 0,
30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 30, 30, 6,
30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 30, 0, 0,
30, 30, 29, 30, 29, 29, 30, 29, 29, 30, 29, 30, 0, 0,
30, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 29, 30, 5,
30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 30, 0, 0,
29, 30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 0, 0,
30, 29, 29, 30, 29, 30, 30, 29, 30, 30, 29, 30, 29, 2,
30, 29, 29, 30, 29, 30, 29, 30, 30, 29, 30, 30, 0, 0,
29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 30, 30, 30, 7,
29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 30, 30, 0, 0,
30, 29, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 0, 0,
30, 29, 30, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 5,
29, 30, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 0, 0,
29, 30, 30, 29, 30, 30, 29, 30, 29, 30, 29, 29, 0, 0,
30, 29, 30, 29, 30, 30, 29, 30, 30, 29, 30, 29, 30, 4,
29, 29, 30, 29, 30, 29, 30, 30, 29, 30, 30, 29, 0, 0,
30, 29, 29, 30, 29, 30, 29, 30, 29, 30, 30, 30, 0, 0,
29, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 30, 30, 2,
29, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 30, 0, 0,
29, 30, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 29, 6,
30, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 0, 0,
30, 30, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 0, 0,
29, 30, 30, 29, 30, 30, 29, 30, 29, 30, 29, 29, 30, 5,
29, 30, 29, 30, 30, 29, 30, 29, 30, 30, 29, 30, 0, 0,
29, 29, 30, 29, 30, 29, 30, 30, 29, 30, 30, 29, 0, 0,
30, 29, 29, 30, 29, 29, 30, 30, 29, 30, 30, 30, 29, 3,
30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 30, 29, 0, 0,
30, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 29, 30, 7,
30, 30, 29, 29, 30, 29, 29, 30, 29, 30, 29, 30, 0, 0,
30, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 0, 0,
30, 30, 29, 30, 30, 29, 30, 29, 29, 30, 29, 30, 29, 6,
30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 30, 0, 0,
29, 30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 0, 0,
30, 29, 30, 29, 30, 29, 30, 29, 30, 30, 29, 30, 30, 4,
29, 29, 30, 29, 29, 30, 29, 30, 30, 30, 29, 30, 0, 0,
30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 29, 30, 0, 0,
30, 30, 29, 29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 2,
30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 0, 0,
30, 29, 30, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 7,
29, 30, 30, 29, 30, 30, 29, 29, 30, 29, 30, 29, 0, 0,
30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 30, 0, 0,
29, 30, 29, 30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 5,
29, 30, 29, 29, 30, 30, 29, 30, 30, 29, 30, 29, 0, 0,
30, 29, 30, 29, 29, 30, 29, 30, 30, 29, 30, 30, 0, 0,
29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 30, 3,
29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 0, 0,
30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 29, 8,
30, 30, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 0, 0,
29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 0, 0,
30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 6,
30, 29, 30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 0, 0,
29, 30, 29, 29, 30, 29, 30, 30, 29, 30, 30, 29, 0, 0,
30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 30, 29, 4,
30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 30, 0, 0,
29, 30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 0, 0,
30, 30, 30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 3,
30, 30, 29, 30, 30, 29, 29, 30, 29, 30, 29, 30, 0, 0,
29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 30, 7,
29, 30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 0, 0,
30, 29, 29, 30, 29, 30, 30, 29, 30, 30, 29, 30, 0, 0,
29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 30, 29, 30, 5,
29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 29, 30, 0, 0,
30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 30, 0, 0,
30, 30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 30, 4,
30, 30, 29, 30, 29, 29, 30, 29, 29, 30, 29, 30, 0, 0,
30, 30, 29, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 8,
30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 29, 0, 0,
30, 29, 30, 30, 29, 30, 30, 29, 30, 29, 30, 29, 0, 0,
30, 29, 29, 30, 29, 30, 30, 29, 30, 30, 29, 30, 29, 6,
30, 29, 29, 30, 29, 30, 29, 30, 30, 29, 30, 30, 0, 0,
29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 30, 30, 0, 0,
30, 29, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 30, 4,
30, 29, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 0, 0,
30, 29, 30, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 10,
29, 30, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 0, 0,
29, 30, 30, 29, 30, 30, 29, 30, 29, 30, 29, 29, 0, 0,
30, 29, 30, 29, 30, 30, 29, 30, 30, 29, 30, 29, 29, 6,
30, 29, 30, 29, 30, 29, 30, 30, 29, 30, 30, 29, 0, 0,
30, 29, 29, 30, 29, 29, 30, 30, 29, 30, 30, 30, 0, 0,
29, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 30, 30, 5,
29, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 30, 0, 0,
29, 30, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 0, 0,
29, 30, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 3,
30, 30, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 0, 0,
29, 30, 30, 29, 30, 29, 30, 30, 29, 29, 30, 29, 30, 8,
29, 30, 29, 30, 30, 29, 30, 29, 30, 30, 29, 29, 0, 0,
30, 29, 30, 29, 30, 29, 30, 30, 29, 30, 30, 29, 0, 0,
30, 29, 29, 30, 29, 29, 30, 30, 29, 30, 30, 29, 30, 5, /********/
30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 30, 29, 0, 0,
30, 30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 29, 0, 0,
30, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 4,
30, 30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 0, 0,
30, 30, 29, 30, 30, 29, 30, 29, 29, 30, 29, 30, 0, 0,
29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 30, 2,
29, 30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 0, 0,
30, 29, 30, 29, 30, 29, 30, 29, 30, 30, 29, 30, 30, 7,
29, 29, 30, 29, 29, 30, 29, 30, 30, 30, 29, 30, 0, 0,
30, 29, 29, 30, 29, 29, 30, 29, 30, 30, 29, 30, 0, 0,
30, 30, 29, 29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 5,
30, 29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 0, 0,
30, 29, 30, 30, 29, 30, 29, 29, 30, 29, 30, 29, 0, 0,
/* *********************************************************************************** */
30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 4,
30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 0, 0,
29, 30, 29, 30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 9,
29, 30, 29, 29, 30, 29, 30, 30, 30, 29, 30, 29, 0, 0,
30, 29, 30, 29, 29, 30, 29, 30, 30, 29, 30, 30, 0, 0,
29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 30, 6,
29, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 0, 0,
30, 29, 30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 0, 0,
29, 30, 30, 30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 4,
29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 0, 0,
30, 29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 0, 0,
29, 30, 29, 29, 30, 30, 29, 30, 30, 29, 30, 29, 30, 2,
29, 30, 29, 29, 30, 29, 30, 30, 29, 30, 30, 29, 0, 0,
30, 29, 30, 29, 29, 30, 29, 30, 29, 30, 30, 30, 29, 6,
30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 30, 29, 0, 0,
30, 30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 0, 0,
30, 30, 30, 29, 30, 29, 29, 30, 29, 29, 30, 30, 29, 5,
30, 30, 29, 30, 29, 30, 29, 30, 29, 29, 30, 30, 0, 0,
29, 30, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29, 0, 0
};
int yyhs(char *str,int year,int month,int day)
{
int first_year=1900;
int last_year=2030;
int i,j;
long int days=0;
int aday=0;
int this_year,this_month,feb_day;
int yindays_year=0;
int yinli_days=0,yinli_day;
int flag=0;
int yinli_year;
int yinli_month;
if (year<first_year||year>last_year) return(0);
/*count days from 1900 1 31 to today */
this_year=year;
feb_day=29;
if (year>1980) first_year=1980;
if ((year==1980)&&(month>2)) first_year=1980;
if ((year==1980)&&(month==2)&&(day>=16)) first_year=1980;
if (year>first_year)
{
if (first_year==1980)
days=days+366-46;
else
days=days+365-30;
}
if (year>first_year+1)
{
if (year%4==0)
{
feb_day=29;
}
else
{
feb_day=28;
}
}
while (year>first_year+1)
{
year--;
if (year%4==0)
{
aday=366;
}
else
{
aday=365;
}
days=days+aday;
}
this_month=month;
for(i=1;i<month;i++)
{
switch(i)
{
case 4:
case 6:
case 9:
case 11:
aday=30;
break;
case 2:
aday=feb_day;
break;
default:
aday=31;
}
days=days+aday;
}
days=days+day;
if (this_year==first_year)
{
if(first_year==1980)
days=days-46;
else
days=days-30;
}
/*count today's yinlil*/
if (first_year==1900)
{
for (i=0;i<=(last_year-first_year);i++)
{
for(j=0;j<13;j++) /*计算阴历一年的天数*/
{
yindays_year=yindays_year+mon[i][j];
}
if (days<yindays_year)
{
yinli_year=i;/*阴历哪一年*/
break;
}
days=days-yindays_year;
yindays_year=0;
}
}
if (first_year==1980)
{
for (i=80;i<=(last_year-1900);i++)
{
for(j=0;j<13;j++) /*计算阴历一年的天数*/
{
yindays_year=yindays_year+mon[i][j];
}
if (days<=yindays_year)
{
yinli_year=i;/*阴历哪一年*/
break;
}
days=days-yindays_year;
yindays_year=0;
}
}
/*确定是哪一个月*/
for (i=0;i<13;i++)
{
if (days<=mon[yinli_year][i])//modified on 29/8/2000 add '='
{
yinli_month=i+1;
if (days==0)
{
if (yinli_month==1)
{
yinli_month=12;
if (mon[yinli_year-1][12]!=0)
days=mon[yinli_year-1][12];
else
days=mon[yinli_year-1][11];
}
else
{
yinli_month=yinli_month-1;
days=mon[yinli_year][yinli_month-1];
}
}
if ((yinli_month==(mon[yinli_year][13]+1))&&(mon[yinli_year][13]!=0))
{
flag=1;
yinli_month=mon[yinli_year][13];
}
if ((yinli_month>(mon[yinli_year][13]+1))&&(mon[yinli_year][13]!=0))
yinli_month=yinli_month-1;
break;
}
days=days-mon[yinli_year][i];
}
yinli_day=days;
if (flag==1)
sprintf(str,"闰%d月%d日\0",yinli_month,yinli_day);
else
sprintf(str,"%d月%d日\0",yinli_month,yinli_day);
return(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -