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

📄 ut8_time.c

📁 小型操作系统,以VC为开发环境,需要boachs调试
💻 C
字号:
/***************************************************************************
**     File name   : ut8_time.c
**     Author      : x.cheng
**     Create date :
**
**	   Comment:
**        function for time...
**
**     Revisions:
**     $Log: ut8_time.c,v $
**     Revision 1.1.1.1  2005/07/27 06:53:15  x.cheng
**     add into repositories
**
**
***************************************************************************/
#include "const.h"
#include "type.h"
#include "stdarg.h"
#include "..\..\Inc\time.h"

/************************************************************
*************************************************************
**      Function Name:			ulSecondFrom1970010100
**      Author:                 x.cheng
**
**      Comment:
**			计算从1970年01月01日00时到开机当日经过的秒数,作为
**       开机时间
**
**      List of parameters:
**			stTime - ts_TIME, 存放当前时间的结构体变量
**
**      Return value:   
**          unsigned long - 秒数
**
**      Revisions:
**
*************************************************************
*************************************************************/
#define MINUTE	60	/*sec per minutes*/
#define HOUR	(60*MINUTE)	/*sec per hour*/
#define DAY	(24*HOUR)	/*sec per day*/
#define YEAR	(365*DAY)	/*sec per year*/
static int saiMonth[13] = {
	0,	
	0,	/* 1月 */
	DAY * (31),
	DAY * (31 + 29),
	DAY * (31 + 29 + 31),
	DAY * (31 + 29 + 31 + 30),
	DAY * (31 + 29 + 31 + 30 + 31),
	DAY * (31 + 29 + 31 + 30 + 31 + 30),
	DAY * (31 + 29 + 31 + 30 + 31 + 30 + 31),
	DAY * (31 + 29 + 31 + 30 + 31 + 30 + 31 + 31),
	DAY * (31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30),
	DAY * (31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31),
	DAY * (31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30),
};
unsigned long ulSecondFrom1970010100(ts_TIME *pstTime)
{
	unsigned long ulSeconds;
	int iYears;

	iYears = 99+1+pstTime->iYear - 70;    /*1970到现在的年数, 解决千年虫问题*/

	/* your see? 1970 isn't a leap year */
	/*:-) magic offsets (y+1) needed to get leap years right*/
	ulSeconds = YEAR*iYears + DAY * ( (iYears+1)/4 );	/*这些年经过的秒数*/
	ulSeconds += saiMonth[pstTime->iMon];	/*再加上当年到当月的秒数*/

	/* and (y+2) hear, if it wasn't a leap year, we have to adjust */
	if (pstTime->iMon > 2 && ((iYears + 2) %4))
		ulSeconds -= DAY;		/*减去一天的秒数*/

	ulSeconds += DAY * (pstTime->iDay -1);	/*本月过去的天数*/
	ulSeconds += HOUR * (pstTime->iHour);
	ulSeconds += MINUTE * (pstTime->iMin);
	ulSeconds += (pstTime->iSec);

	return ulSeconds;
}

/************************************************************
*************************************************************
**      Function Name:			vGetCurrentTime
**      Author:                 x.cheng
**
**      Comment:
**			取得当前时间(操作系统的)
**
**      List of parameters:
**			pstCurTime - ts_TIME*, 存放当前时间的结构体地址
**
**      Return value:   
**          no
**
**      Revisions:
**
*************************************************************
*************************************************************/
void vGetCurrentTime(ts_TIME *pstCurTime)
{
	pstCurTime = (ts_TIME *)0l;   /* dummy function, avoid warning */
}

⌨️ 快捷键说明

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