struct tm
{
int tm_sec; /* 秒 – 取值区间为[0,59] */};
time_t time(time_t *t) : 单位秒,从1970年1月1日算起
char *ctime(time_t *t) : 将秒转化成字符串,格式为:星期 月 日 时:分:秒 年
struct tm *localtime(const time_t *t) : 将秒转化成结构体,区时为本地区时
time_t mktime(struct tm *t) : 将结构体转成秒
char *asctime(struct tm *t) : 将结构体转字符串,格式为:星期 月 日 时:分:秒 年
double difftime(time_t t1,time_t t2) : 返回相差秒数
struct tm *gmtime(const time_t *t) : 将秒转为结构体,但区时为格林威治
size_t strftime(char *str,size_t maxsize,const char *format,const struct tm *t) : 将结构体按照format格式化转成字符串存放在str里,maxsize为字符串准备接受的长度
其中format的格式:数据来源
说明符 | 替换为 | 实例 |
---|---|---|
%a | 缩写的星期几名称 | Sun |
%A | 完整的星期几名称 | Sunday |
%b | 缩写的月份名称 | Mar |
%B | 完整的月份名称 | March |
%c | 日期和时间表示法 | Sun Aug 19 02:56:02 2012 |
%d | 一月中的第几天(01-31) | 19 |
%H | 24 小时格式的小时(00-23) | 14 |
%I | 12 小时格式的小时(01-12) | 05 |
%j | 一年中的第几天(001-366) | 231 |
%m | 十进制数表示的月份(01-12) | 08 |
%M | 分(00-59) | 55 |
%p | AM 或 PM 名称 | PM |
%S | 秒(00-61) | 02 |
%U | 一年中的第几周,以第一个星期日作为第一周的第一天(00-53) | 33 |
%w | 十进制数表示的星期几,星期日表示为 0(0-6) | 4 |
%W | 一年中的第几周,以第一个星期一作为第一周的第一天(00-53) | 34 |
%x | 日期表示法 | 08/19/12 |
%X | 时间表示法 | 02:50:06 |
%y | 年份,最后两个数字(00-99) | 01 |
%Y | 年份 | 2012 |
%Z | 时区的名称或缩写 | CDT |
%% | 一个 % 符号 | % |
clock_t clock(void) : 计算程序经过的时钟记时单元,除以CLOCKS_PER_SEC得到秒
#include <time.h> #include <stdio.h> int main() { time_t second,second2; char *str,buf[80]; struct tm *t; clock_t start,end; start = clock(); time(&second);//miao printf("%ld\n",second); str = ctime(&second); printf("%s\n",str); t = localtime(&second); printf("%d-%d-%d %d:%d:%d\n",t->tm_year+1900,t->tm_mon+1,t->tm_mday,t->tm_hour,t->tm_min,t->tm_sec); t = gmtime(&second); printf("%d-%d-%d %d:%d:%d\n",t->tm_year+1900,t->tm_mon+1,t->tm_mday,t->tm_hour,t->tm_min,t->tm_sec); second2 = mktime(t); printf("%ld\n",second2); str = asctime(t); printf("%s\n",str); strftime(buf,80,"%x %X",t); printf("%s\n",buf); end = clock(); printf("%ld %ld\n",start,end); printf("%lf\n",(double)(end-start)/CLOCKS_PER_SEC); return 0; }