⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 yinli.c

📁 一个操作系统源代码 用于嵌入式设备 在Vc++环境下仿真 成功移植到多款处理器上
💻 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 + -