关于C语言的时间函数求一函数 要求:输入 年、月、日 判断与当前差多少天
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/21 17:23:34
关于C语言的时间函数求一函数 要求:输入 年、月、日 判断与当前差多少天
关于C语言的时间函数
求一函数 要求:输入 年、月、日 判断与当前差多少天
关于C语言的时间函数求一函数 要求:输入 年、月、日 判断与当前差多少天
思路:一般做法都是用指定的时间去和一个固定时间来比较,得出此时间与固定时间所差的天数,一般固定时间都使用“1900-01-01”,比如d1与固定时间的差为Num1天,d2与固定时间的差为Nmu2天,那么d1、d2的天数差就是Num1与Num2间的差值了.最好不要直接用d1和d2来比较,因为不好确定他们之间有多少个闰年、大小月等.
以下代码是我从其它程序中摘出来的,大体上能满足你的需求(使用的中文编程,细节自己修改)
#include
#include
typedef unsigned char UNBYTE;
typedef unsigned short UNWORD;
typedef unsigned long UNLONG;
typedef unsigned long DATETIME;
/** 从 0001-01-01 到 1899-12-31 间的天数,故0日期是从1900-01-01开始的 */
const UNLONG n日期开始 = 693594;
/** 时间的转换系数*/
const UNBYTE n每天时数 = 24;
const UNBYTE n每时分数 = 60;
const UNBYTE n每分秒数 = 60;
const UNWORD n每时秒数 = n每分秒数 * n每时分数;
const UNLONG n每天秒数 = n每天时数 * n每时秒数;
typedef enum
{
TRUE = 0x5A,
FALSE = 0
}UBBOOL;
typedef struct
{
UNBYTE ub_年;
UNBYTE ub_月;
UNBYTE ub_日;
UNBYTE ub_时;
UNBYTE ub_分;
UNBYTE ub_秒;
UNBYTE ub_百分秒;
UNBYTE ub_备用;
}S日历时钟; /**8 byte*/
UNBYTE ub_每月天数[2][12] =
{
{31,28,31,30,31,30,31,31,30,31,30,31},
{31,29,31,30,31,30,31,31,30,31,30,31}
};
UNBYTE 润年判断(const UNBYTE lub_年)
{
if( (lub_年 % 4 == 0) && ((lub_年 % 100 != 0) || (lub_年 % 400 == 0)) )
return 1;
else
return 0;
};
UBBOOL 转换日期(UNBYTE lub_年,UNBYTE lub_月,UNBYTE lub_日,DATETIME &lub_日期)
{
UNBYTE lub_日表序号 = 0;
UNWORD luw_年;
int i;
/**根据是否为润年取日表的序号*/
luw_年 = 2000 + lub_年;
lub_日表序号 = 润年判断(luw_年);
lub_日期 = lub_日;
if ( (luw_年 >= 2000)
&& (luw_年 = 1)
&& (lub_月 = 1)
&& (lub_日