C语言中如何获取时间
程序员文章站
2022-03-09 23:31:51
...
C语言的时间函数,使用这些函数时要加入头文件time.h
函数 | 说明 |
---|---|
char *asctime(const struct tm *tm) | 将时间日期以字符串格式表示 |
char *asctime_r(const struct tm *tm,char *buf) | 将时间日期以字符串格式表示,加了缓冲器存放返回值 |
char *ctime(const time_t *timep) | 将时间日期以字符串格式表示 |
char *ctime_r(const time_t *timep,char *buf) | 将时间日期以字符串格式表示,加了缓冲器存放返回值 |
struct tm *gmtime(const time_t *timep) | 获取当前时间和日期 |
struct tm *gmtime_r(const time_t *timep, const tm *result) | 获取当前时间和日期,result用于存放返回值 |
struct tm *localtime(const time_t *timep) | 获取当前时间和日期并转换为本地时间 |
struct tm *localtime_r(const time_t *timep, const tm *result) | 获取当前时间和日期并转换为本地时间,result用于存放返回值 |
time_t mktime(struct tm *tm) | 将时间转换成经过的秒数,起点为1970-1-1 00:00:00 |
time() | 获取当前时间(以秒数表示) |
demo代码test.c:
#include <stdio.h>
#include <time.h>
int main(){
time_t timetemp; //定义一个时间结构体变量
struct tm *p; //定义一个结构体指针
time(&timetemp); //获得时间
p = localtime(&timetemp);
printf("%d:%d:%d\n",p->tm_hour,p->tm_min,p->tm_sec);
return 0;
}
编译运行:
~/Desktop/myC$ gcc test.c -o test
~/Desktop/myC$ ./test
18:30:48
tm为时间信息结构体:
#ifndef _TM_DEFINED
struct tm {
int tm_sec; /* 秒 – 取值区间为[0,59] */
int tm_min; /* 分 - 取值区间为[0,59] */
int tm_hour; /* 时 - 取值区间为[0,23] */
int tm_mday; /* 一个月中的日期 - 取值区间为[1,31] */
int tm_mon; /* 月份(从一月开始,0代表一月) - 取值区间为[0,11] */
int tm_year; /* 年份,其值等于实际年份减去1900 */
int tm_wday; /* 星期 – 取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推 */
int tm_yday; /* 从每年的1月1日开始的天数 – 取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推 */
int tm_isdst; /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的时候,tm_isdst为0;不了解情况时,tm_isdst()为负。
long int tm_gmtoff; /*指定了日期变更线东面时区中UTC东部时区正秒数或UTC西部时区的负秒数*/
const char *tm_zone; /*当前时区的名字(与环境变量TZ有关)*/
};
#define _TM_DEFINED
#endif
time_t 为长整型的别名
<time.h>
#ifndef __TIME_T
#define __TIME_T /* 避免重复定义 time_t */
typedef long time_t; /* 时间值time_t 为长整型的别名*/
#endif
最后,再给一个综合性demo
#include <stdio.h>
#include <time.h>
int main(){
time_t timetemp;
struct tm *p;
time(&timetemp);
p = localtime(&timetemp);
printf("localtime:%d:%d:%d\n",p->tm_hour,p->tm_min,p->tm_sec);
struct tm result1;
struct tm *p2 = localtime_r(&timetemp,&result1);
printf("localtime_r:%d:%d:%d\n",result1.tm_hour,result1.tm_min,result1.tm_sec);
char* t = asctime(p);
printf("asctime:%s\n",t);
//asctime_r是asctime的扩展,提供了缓冲器,用于存放返回值,缓冲器长度不能小于26
char buf[26];
char* t1 = asctime_r(p,buf);
printf("asctime_r:%s\n",t1);
char* t2 = ctime(&timetemp);
printf("ctime:%s\n",t2);
char buf1[26];
char* t3 = ctime_r(&timetemp,buf1);
printf("ctime_r:%s\n",t3);
p = gmtime(&timetemp);
printf("gmtime:%d:%d:%d\n",p->tm_hour,p->tm_min,p->tm_sec);
struct tm result;
struct tm *p1 = gmtime_r(&timetemp,&result);
printf("gmtime_r:%d:%d:%d\n",p1->tm_hour,p1->tm_min,p1->tm_sec);
time_t sec = mktime(p1);
printf("mktime:%ld\n",sec);
return 0;
}
编译运行:
~/Desktop/myC$ gcc test.c -o test
~/Desktop/myC$ ./test
localtime:19:40:56
localtime_r:19:40:56
asctime:Tue Apr 2 19:40:56 2019
asctime_r:Tue Apr 2 19:40:56 2019
ctime:Tue Apr 2 19:40:56 2019
ctime_r:Tue Apr 2 19:40:56 2019
gmtime:11:40:56
gmtime_r:11:40:56
mktime:1554176456
谢谢阅读
上一篇: html怎样让div居中
下一篇: python压缩包怎么安装