time.h使用总结
time.h常用函数总结
1 time_t time( 2 time_t* timer // 一般设置为NULL 3 ); 4 5 //time_t就是long,得到此时距1970.01.01午夜的秒数
1 struct tm *localtime( 2 const time_t *timer 3 ); 4 5 //返回一个以tm结构表达的机器时间信息
1 char* asctime( 2 struct tm * ptr 3 ); 4 5 //得到"星期,月,日,小时:分:秒,年"的格式 6 //eg: Wed Dec 24 17:26:44 2014
1 double difftime( 2 time_t time2, 3 time_t time1 4 ); 5 6 //计算两个日历时间的差(秒数)
1 size_t strftime( 2 char *strDest, //格式化到 3 size_t maxsize, //最大格式化数 4 const char *format, //以某种格式化方式常用 %Y-%m-%d %H:%M:%S 5 const struct tm *timeptr //将此时间 6 ); 7 8 //格式化时间
time.h常用结构总结
1 struct tm{ 2 int tm_sec; /* Seconds. [0-60] ( leap second) */ 3 int tm_min; /* Minutes. [0-59] */ 4 int tm_hour; /* Hours. [0-23] */ 5 int tm_mday; /* Day. [ -3 ] */ 6 int tm_mon; /* Month. [0- ] */ 7 int tm_year; /* Year - 900. */ 8 int tm_wday; /* Day of week. [0-6] */ 9 int tm_yday; /* Days in year.[0-365] */ 10 int tm_isdst; /* DST. [- /0/ ]*/ 11 #ifdef __USE_BSDlong int tm_gmtoff; /* Seconds east of UTC. */ 12 __const char *tm_zone; /* Timezone abbreviation. */ 13 #elselong int __tm_gmtoff; /* Seconds east of UTC. */ 14 __const char *__tm_zone; /* Timezone abbreviation. */ 15 #endif 16 };
strftime函数格式记录
1 %a 星期几的简写 2 %A 星期几的全称 3 %b 月分的简写 4 %B 月份的全称 5 %c 标准的日期的时间串 6 %C 年份的后两位数字 7 %d 十进制表示的每月的第几天 8 %D 月/天/年 9 %e 在两字符域中,十进制表示的每月的第几天 10 %F 年-月-日 11 %g 年份的后两位数字,使用基于周的年 12 %G 年分,使用基于周的年 13 %h 简写的月份名 14 %H 24小时制的小时 15 %I 2小时制的小时 16 %j 十进制表示的每年的第几天 17 %m 十进制表示的月份 18 %M 十时制表示的分钟数 19 %n 新行符 20 %p 本地的AM或PM的等价显示 21 %r 2小时的时间 22 %R 显示小时和分钟:hh:mm %S 十进制的秒数 23 %t 水平制表符 %T 显示时分秒:hh:mm:ss 24 %u 每周的第几天,星期一为第一天 (值从0到6,星期一为0) 25 %U 第年的第几周,把星期日做为第一天(值从0到53) 26 %V 每年的第几周,使用基于周的年 27 %w 十进制表示的星期几(值从0到6,星期天为0) 28 %W 每年的第几周,把星期一做为第一天(值从0到53) 29 %x 标准的日期串 30 %X 标准的时间串 31 %y 不带世纪的十进制年份(值从0到99) 32 %Y 带世纪部分的十制年份 33 %z,%Z 时区名称,如果不能得到时区名称则返回空字符.%% 百分号
例子代码
1 #include <stdio.h> 2 #include <time.h> 3 4 int main(void) 5 { 6 time_t timer; 7 timer = time(NULL); 8 9 printf("%ld\n", timer); 10 11 struct tm *ptr = localtime(&timer); 12 printf("%d.%d.%d %d:%d:%d\n", 13 ptr->tm_year, ptr->tm_mon, ptr->tm_mday, 14 ptr->tm_hour, ptr->tm_min, ptr->tm_sec); 15 16 printf("%s\n", asctime(ptr)); 17 18 printf("%s\n", ctime(ptr)); 19 20 _sleep(2000); 21 time_t timer2; 22 timer2 = time(NULL); 23 printf("%f\n", difftime(timer2, timer)); 24 25 char strDest[20]; 26 strftime(strDest, sizeof(strDest), "%Y-%m-%d %H:%M:%S", ptr); 27 28 printf("%s\n", strDest); 29 30 return 0; 31 }
运行结果