linuxc时间函数
#include <stdio.h> #include <time.h> /*包含“time.h”头文件*/ /*time函数会从公元1970年1月1日的UTC时间算到现在经过的秒数。参数t是一个指针 ,如果不是一个空指针,函数也会将返回值存到t指针所指的内存单元中, time_t是“time.h”头文件中定义的一个数据类型,所示一个时间的秒数 相当于一个长整形变量,同时,函数会返回一个time_t型长整数*/ //time_t time(time_t *t); void time_test() { time_t t1; //定义一个time_t型时间变量 time_t t2; t2 = time(&t1); //获取当前的时间,参数是time_t 指针 printf("t1: %d\n", t1); //t1 == t2 printf("t2: %d\n", t2); } int main01(void) { time_test(); printf("Hello World!\n"); return 0; }
struct tm{ int tm_sec; int tm_min; int tm_hour; int tm_mday; int tm_mon; int tm_year; int tm_wday; int tm_yday; int tm_isdst; };int tm_sec 代表目前秒数,正常范围为0-59
#include <stdio.h> #include <time.h> void gmtime_test() { struct tm *tm1; //定义一个tm型结构体指针 time_t t1; //定义一个time_t型变量 time(&t1); tm1 = gmtime(&t1); printf("分钟是: %d\n", (*tm1).tm_min); printf("秒是: %d\n", tm1->tm_sec); printf("year: %d\n",1900+tm1->tm_year); } int main() { gmtime_test(); printf("hello world!\n"); return 0; }
#include <stdio.h> #include <time.h> /* 头文件:time.h 函数定义:char * ctime(const time_t * timep); 说明:ctime()的参数是一个指向timep类型的指针。函数会把这个指针转换成一个字符串, 然后返回为一个字符串的头指针。这里返回的时间已经转换成本地时区的时间,与计算机现实的时间相同。 */ /* 头文件:time.h 函数定义:char *asctime(const struct tm *timeptr); 说明:asctime()将函数timeptr所指的tm结构中的信息转换成现实世界所使用的时间日期表示方法, 然后将结果以字符串形式返回。 */ void asctime_ctime_test() { time_t t1; struct tm * tm1; t1 = time((time_t *)NULL); tm1 = gmtime(&t1); printf("%s\n", ctime(&t1)); printf("%s", asctime(tm1)); } int main() { asctime_ctime_test(); printf("hello world\n"); return 0; }localtime:函数localtime的作用是返回tm结构格式的当地时间
#include <stdio.h> #include <time.h> /*头文件:time.h 函数定义:struct tm * gmtime(const time_t * timep); 说明:gmtime()将参数timep所指的time_t结构中的信息转换成现实世界所使用的时间日期表示方法, 然后将结果友结构tm返回*/ /* localtime:函数localtime的作用是返回tm结构格式的当地时间 头文件:time.h 函数定义:struct tm *localtime(const time_t *timep); 说明:localtime()将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法, 然后将结果由结构tm返回,与gmtime不同的是,gmtime函数返回的是一个UTC时间。 */ void gmtime_test() { struct tm *tm1; //定义一个tm型结构体指针 time_t t1; //定义一个time_t型变量 struct tm *tm2; time(&t1); tm1 = gmtime(&t1); tm2 = localtime(&t1); printf("分钟是: %d\n", (*tm1).tm_min); printf("秒是: %d\n", tm1->tm_sec); printf("year: %d\n",tm1->tm_year); printf("gmtime: 小时: %d\n", tm1->tm_hour); printf("localtime: 年是:%d\n", tm2->tm_year); printf("localtime:小时:%d\n", tm2->tm_hour); } int main() { gmtime_test(); printf("hello world!\n"); return 0; }
#include <stdio.h> #include <time.h> void mktime_test1() { time_t t1; time_t t2, t3; struct tm * tm1, *tm2; t1 = time(NULL); printf("time()的秒数是: %d\n", t1); //转换成本地时间表示 tm1 = localtime(&t1); tm2 = gmtime(&t1); printf("tm1->isdst是: %d\n", tm1->tm_isdst); //0 printf("tm2->isdst的时间是: %d\n", tm2->tm_isdst); //0 printf("tm1->tm_hour是: %d\n", tm1->tm_hour); //6 printf("tm2->tm_hour的时间是: %d\n", tm2->tm_hour); //6 //用tm装换成时间的字符串表示 printf("localtime()的时间是: %s\n", asctime(tm1)); //Mon Jan 11 06:18:47 2016 printf("gmtime()的时间是: %s\n", asctime(tm2)); //Mon Jan 11 06:18:47 2016 //用time_t转换成字符串表示 printf("localtime()的时间是: %s\n", ctime(&t1)); //Mon Jan 11 14:18:47 2016 //把tm转变成time_t再转变成字符串 t2 = mktime(tm1); t3 = mktime(tm2); printf("localtime转变的tm再赚回来是: %d\n", t2); printf("gmtime转变的tm再赚回来是: %d\n", t3); } int main() { mktime_test1(); printf("Hello World\n"); return 0; }gettimeofday:取得目前时间
#include <stdio.h> #include <time.h> #include <sys/time.h> #include <unistd.h> void gettimeofday_test() { struct timeval tv; struct timezone tz; gettimeofday(&tv, &tz); printf("秒数是: %d\n", tv.tv_sec); printf("毫秒是: %d\n", tv.tv_usec); } int main41() { gettimeofday_test(); printf("hello world!\n"); return 0; }
#include <stdio.h> #include <sys/time.h> #include <unistd.h> /* 头文件:sys/time.h unistd.h 函数定义: int settingofday(struct timeval *tv, struct timezone * tz); 说明:settimeofday()会把目前时间设置成tv所指的结构信息,当地地区信息则设置成tz所指的结构 注意:只有root权限才能使用此函数修改时间,成功返回0, 失败返回-1,错误码errno EPERM:并非由root权限调用settingofday(),权限不够 EINVAL 时区或某个数据是不正确的,无法正确设置时间 */ void setimeofday_test() { int ret = 0; struct timeval tv; struct timezone tz; gettimeofday(&tv, &tz); printf("tv_sec : %ld\n", tv.tv_sec); tv.tv_sec = tv.tv_sec+4000; //把当前时间添加4000秒 ret = settimeofday(&tv,&tz); printf("%d\n", ret); } int main51() { printf("Hello World!!\n"); return 0; }
#include <stdio.h> #include <sys/time.h> #include <unistd.h> #include <time.h> /* 头文件: time.h 函数定义: size_t strftime(char *s, size_t max, const char *format, const struct tm *tm); 说明: strftime()会将参数tm的时间结构, 参照参数format所指定的字符串格式做转换, 转换后的字符串内容将复制到参数s所指的字符串数组中, 该字符串的最大长度为参数max所控制 */ void strftime_test() { char *format[] = {"%I:%M:%S %P %m%d%a", "%x %X, %Y", NULL}; char buf[30] = { 0 }; int i; time_t t1; struct tm *tm; time(&t1); tm = localtime(&t1); for(i =0; format[i] != NULL; ++i) { strftime(buf, sizeof(buf), format[i], tm); printf("%s\n", buf); } } int main61() { strftime_test(); printf("hello world!!\n"); return 0; }clock:取得进程占用CPU的大约时间
#include <stdio.h> #include <time.h> /* clock:取得进程占用CPU的大约时间 头文件:time.h 函数定义:clock_t clock(void); 说明:clock()用来返回进程占用CPU的大约时间 */ void clock_test() { int i=0; clock_t c; for(i=0; i<1; ++i) { printf("i的值是: %d\n", i); } c = clock(); printf("%ld\n", c); } int main71() { clock_test(); printf("Hello World!!\n"); return 0; }