关于C语言的时间函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于C语言的时间函数相关的知识,希望对你有一定的参考价值。
求一函数 要求:输入 年、月、日 判断与当前差多少天
感谢大侠了
以下代码是我从其它程序中摘出来的,大体上能满足你的需求(使用的中文编程,细节自己修改)
#include <stdio.h>
#include <string.h>
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_年 <= 2099)
&& (lub_月 >= 1)
&& (lub_月 <= 12)
&& (lub_日 >= 1)
&& (lub_日 <= ub_每月天数[lub_日表序号][lub_月-1]) )
/**计算月*/
for( i=0; i<lub_月-2; i++ )
lub_日期 += ub_每月天数[lub_日表序号][i];
luw_年 -= 1;
lub_日期 += (luw_年 * 365) + (luw_年 / 4) - (luw_年 / 100) + (luw_年 / 400) - n日期开始;
return TRUE;
else
return FALSE;
;
UBBOOL 转换时间(UNBYTE lub_时, UNBYTE lub_分, UNBYTE lub_秒, DATETIME &lub_时间)
if ( (lub_时 < n每天时数) && (lub_分 < n每时分数) && (lub_秒 < n每分秒数) )
lub_时间 = (lub_时 * n每时秒数 + lub_分 * n每分秒数 + lub_秒);
return TRUE;
else
return FALSE;
;
UBBOOL 转换时钟(S日历时钟 &ls_时钟, DATETIME &ldt_时间)
DATETIME dt_日 = 0;
DATETIME dt_秒 = 0;
ldt_时间 = 0;
if ((TRUE == 转换日期(ls_时钟.ub_年, ls_时钟.ub_月, ls_时钟.ub_日, dt_日))
&&(TRUE == 转换时间(ls_时钟.ub_时, ls_时钟.ub_分, ls_时钟.ub_秒, dt_秒)))
ldt_时间 = dt_日 * n每天秒数 + dt_秒;
return TRUE;
else
return FALSE;
;
void main()
DATETIME dt,dt2,cha;
S日历时钟 s_now;
S日历时钟 s_now2;
s_now.ub_年 = 9;
s_now.ub_月 = 12;
s_now.ub_日 = 15;
s_now.ub_时 = 23;
s_now.ub_分 = 59;
s_now.ub_秒 = 59;
s_now2.ub_年 = 9;
s_now2.ub_月 = 12;
s_now2.ub_日 = 16;
s_now2.ub_时 = 0;
s_now2.ub_分 = 0;
s_now2.ub_秒 = 1;
if(( TRUE == 转换时钟(s_now, dt))&&( TRUE == 转换时钟(s_now2, dt2)))
cha = dt2-dt;
else
puts("error");
//////////////////////////////////////////
参考技术A 这个函数是求两个时间之差,单位是秒,换算一下就行。
double difftime(
time_t timer1,
time_t timer0
);
以上是关于关于C语言的时间函数的主要内容,如果未能解决你的问题,请参考以下文章