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

📄 time.c

📁 PDA程序开发PDA程序开发PDA程序开发PDA程序开发PDA程序开发PDA程序开发PDA程序开发PDA程序开发
💻 C
📖 第 1 页 / 共 2 页
字号:
/*========================================================================
 *
 *  版权所有 (C) 2000-2001 吴柏建. All Rights Reserved.
 *
 *  文件:       time.c
 *  内容:		PSDE_DEMO_PDA处理时间的函数。
 *	作者:			吴柏建。
 *	制作日期:		2000.8.6-2001.8.6
 *	修改日期:		2001..
 *
 *========================================================================*/
#include "pda.h"

#define TIME_MIN_YEAR  1900
#define TIME_MAX_YEAR  2099

/*PDA的系统全局时间*/
PDATIME SysTime;

/*PDA的用户处理秒事件的全局函数指针*/
void (*FuncSecond)(void)=NULL;

/*≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
□---得到每月的最大天数-------
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡*/
int GetMonthMaxDay(int year,int month)
{
	switch(month)
	{
	case 4:
	case 6:
	case 9:
	case 11:return 30;
	case 2:if((year%4!=0)||(year%100==0&&year%400!=0))return 28;else return 29;
	default:return 31;
	}
}
/*≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
□---得到某一天的星期数-------
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡*/
int GetWeek(int year,int month,int day)
{
    long i;
    i=1461*(long)(month<=2?year-1:year)/4+153*(long)(month<=2?month+13:month+1)/5+day;
    return (int)((i-621049)%7);
}
/*≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
□---时间增加一小时-------
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡*/
void TimeHourAdd(PDATIME *pTime)
{
	if(++pTime->hour>23)
	{
		pTime->hour=0;
		if(++pTime->day>GetMonthMaxDay(pTime->year,pTime->month))
		{
			pTime->day=1;
			if( ++pTime->month>12 )
			{
				pTime->month=1;
				if(++pTime->year>TIME_MAX_YEAR)pTime->year=TIME_MAX_YEAR;
			}
		}
	}
}
/*≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
□---时间减少一小时-------
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡*/
void TimeHourDec(PDATIME *pTime)
{
	if(--pTime->hour<0)
	{
		pTime->hour=23;
		if(--pTime->day<=0)
		{
			if( --pTime->month<0 )
			{
				pTime->month=12;
				if(--pTime->year<TIME_MIN_YEAR)pTime->year=TIME_MIN_YEAR;
			}
			pTime->day=GetMonthMaxDay(pTime->year,pTime->month);
		}
	}
}
/*≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
□---时间处理小时改变-------
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡*/
void TimeHourChange(int hour,PDATIME *pTime)
{
	if(hour>0){while(hour--)TimeHourAdd(pTime);}
	else if(hour<0)while(hour++)TimeHourDec(pTime);
}
/*≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
□---处理time结构增加一分钟的函数-------
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡*/
void TimeMinuteAdd(PDATIME *pTime)
{
	static int i;
	if(++pTime->minute>59)
	{
		pTime->minute=0;
		if(++pTime->hour>23)
		{	
			pTime->hour=0;
			switch(pTime->month)
			{
			case 4:
			case 6:
			case 9:
			case 11:i=30;break;
			case 2:if((pTime->year%4!=0)||(pTime->year%100==0&&pTime->year%400!=0))i=28;else i=29;break;
			default:i=31;break;
			}
			if(++pTime->day>i)
			{
				pTime->day=1;
				if( ++pTime->month>12 )
				{
					pTime->month=1;
					if(++pTime->year>TIME_MAX_YEAR)pTime->year=TIME_MAX_YEAR;
				}
			}
		}
	}
}
/*≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡
□---处理time结构增加一秒的函数-------
≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡≡*/
void TimeSecondAdd(PDATIME *pTime)
{
	if(++pTime->second>59 )
	{
		pTime->second=0;
		TimeMinuteAdd(pTime);
	}
}





























const unsigned char MCTG[]="庚辛壬癸甲乙丙丁戊己";
const unsigned char MCDZ[]="子丑寅卯辰巳午未申酉戌亥";
const unsigned char MCSX[]="鼠牛虎免龙蛇马羊猴鸡狗猪";

const unsigned char SolartermStr[24][6]=/*农历节气*/
{"小 寒","大 寒","立 春","雨 水","惊 蛰","春 分","清 明","谷 雨","立 夏",
"小 满","芒 种","夏 至","小 暑","大 暑","立 秋","处 暑","白 露","秋 分",
"寒 露","霜 降","立 冬","小 雪","大 雪","冬 至",};

const unsigned char MCMonthStr[12][8]=
{" 正 月"," 二 月"," 三 月"," 四 月"," 五 月"," 六 月"," 七 月"," 八 月"," 九 月"," 十 月","十一月","十二月",};

const unsigned char MCDayStr[30][6]=
{"初 一","初 二","初 三","初 四","初 五","初 六","初 七","初 八","初 九","初 十",
"十 一","十 二","十 三","十 四","十 五","十 六","十 七","十 八","十 九","二 十",
"廿 一","廿 二","廿 三","廿 四","廿 五","廿 六","廿 七","廿 八","廿 九","三 十",};

const unsigned char MCNewyear[]=/*农历新年的阳历时间对照表(1950~2049)*/
{129,217,206,127,214,203,124,212,131,218,208,128,215,205,125,213,202,
121,209,130,217,206,127,215,203,123,211,131,218,207,128,216,205,125,
213,202,220,209,129,217,206,127,215,204,123,210,131,219,207,128,216,
205,124,212,201,122,209,129,218,207,126,214,203,123,210,131,219,208,
128,216,205,125,212,201,122,210,129,217,206,126,213,203,123,211,131,
219,208,128,215,204,124,212,201,122,210,130,217,206,126,214,202,123,
211,201,219,208,128,215,204,124,212,202,};

const unsigned char MCTable[]=/*农历时间表(1950~2049)*/
{197,45,5,54,90,173,197,170,5,178,61,165,205,74,13,74,154,149,10,151,
101,86,138,181,10,213,70,210,142,165,14,165,54,74,140,151,122,155,
197,90,5,106,91,105,199,82,11,82,75,37,198,75,10,75,212,171,2,173,
101,109,139,105,13,169,77,146,205,37,45,37,218,77,10,86,98,182,133,
181,6,213,94,169,206,146,14,146,61,38,138,86,10,87,212,214,3,90,86,
213,198,201,7,73,70,147,197,43,5,43,42,91,197,90,117,106,203,85,11,
164,91,73,202,147,10,149,69,45,138,173,26,181,213,170,5,210,109,165,
205,74,13,74,76,149,197,46,5,86,42,181,197,178,102,210,142,165,103,
37,86,75,140,151,12,171,53,90,138,214,59,105,215,82,11,82,107,37,
202,75,10,75,84,171,133,91,5,173,43,106,203,82,125,146,205,37,13,
37,90,85,196,173,4,182,53,181,141,170,14,201,222,146,14,146,109,38,
138,86,10,87,68,214,134,213,7,85,7,73,};

const unsigned char SolartermStore[]=/*农历节气库(1950~2049)*/
{
/*1950*/ 6,20,4,19,6,21,5,20,6,21,6,22,8,23,8,24,8,23,9,24,8,23,8,22,
/*1951*/ 6,21,4,19,6,21,5,21,6,22,6,22,8,24,8,24,8,24,9,24,8,23,8,23,
/*1952*/ 6,21,5,20,5,21,5,20,5,21,6,21,7,23,7,23,8,23,8,23,7,22,7,22,
/*1953*/ 5,20,4,19,6,21,5,20,6,21,6,22,7,23,8,23,8,23,8,24,8,22,7,22,
/*1954*/ 6,20,4,19,6,21,5,20,6,21,6,22,8,23,8,24,8,23,9,24,8,23,7,22,
/*1955*/ 6,21,4,19,6,21,5,21,6,22,6,22,8,23,8,24,8,24,9,24,8,23,8,22,
/*1956*/ 6,21,5,20,5,20,5,20,5,21,6,21,7,23,7,23,8,23,8,23,7,22,7,22,
/*1957*/ 5,20,4,19,6,21,5,20,6,21,6,22,7,23,8,23,8,23,8,24,8,22,7,22,
/*1958*/ 6,20,4,19,6,21,5,20,6,21,6,22,7,23,8,23,8,23,9,24,8,23,7,22,
/*1959*/ 6,21,4,19,6,21,5,21,6,22,6,22,8,23,8,24,8,24,9,24,8,23,8,22,
/*1960*/ 6,21,5,19,5,20,5,20,5,21,6,21,7,23,7,23,7,23,8,23,7,22,7,22,
/*1961*/ 5,20,4,19,6,21,5,20,6,21,6,21,7,23,8,23,8,23,8,23,7,22,7,22,
/*1962*/ 6,20,4,19,6,21,5,20,6,21,6,22,7,23,8,23,8,23,9,24,8,23,7,22,
/*1963*/ 6,21,4,19,6,21,5,21,6,22,6,22,8,23,8,24,8,24,9,24,8,23,8,22,
/*1964*/ 6,21,5,19,5,20,5,20,5,21,6,21,7,23,7,23,7,23,8,23,7,22,7,22,
/*1965*/ 5,20,4,19,6,21,5,20,6,21,6,21,7,23,8,23,8,23,8,23,7,22,7,22,
/*1966*/ 6,20,4,19,6,21,5,20,6,21,6,22,7,23,8,23,8,23,9,24,8,23,7,22,
/*1967*/ 6,21,4,19,6,21,5,21,6,22,6,22,8,23,8,24,8,24,9,24,8,23,8,22,
/*1968*/ 6,21,5,19,5,20,5,20,5,21,5,21,7,23,7,23,7,23,8,23,7,22,7,22,
/*1969*/ 5,20,4,19,6,21,5,20,6,21,6,21,7,23,8,23,8,23,8,23,7,22,7,22,
/*1970*/ 6,20,4,19,6,21,5,20,6,21,6,22,7,23,8,23,8,23,9,24,8,23,7,22,
/*1971*/ 6,21,4,19,6,21,5,21,6,22,6,22,8,23,8,24,8,24,9,24,8,23,8,22,
/*1972*/ 6,21,5,19,5,20,5,20,5,21,5,21,7,23,7,23,7,23,8,23,7,22,7,22,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -