linux编程中的时间

在linux中的时间有

time_t和struct tm

time_t的定义为type long time_t



time_t描述的时间是从1970年1月1日0时0分0秒到获取时间的那一秒的秒数。

函数time(NULL)可以获取当前的时间并以time_t的类型返回。


time_t 获取到的时间不够直观,为了直观地描述时间,采用了tm结构体的形式,tm结构体的内容为:

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, 11]*/ 

int tm_year; /*年份 - 其值为1900年至今年数*/ 

int tm_wday; /*星期 - 取值区间[0, 6],0代表星期天,1代表星期1,以此类推*/ 

int tm_yday; /*从每年的1月1日开始的天数-取值区间为[0, 365],0代表1月1日*/ 

int tm_isdst; /*夏令时标识符,使用夏令时,tm_isdst为正,不使用夏令时,tm_isdst为0,不了解情况时,tm_isdst为负*/

}


tm *localtime(time_t *p)

tm * gmtime(time_t *p)

两个函数都可以把time_t类型的函数转换成为tm结构体

localtime函数是转换成为本地的时间,而gmtime则是转换成为格林治时间


time_t mktime (struct  tm * p_tm)

可以将struct tm 结构体类型的函数转换成为time_t的类型


示例:

#include <time.h>

#include <stdio.h>

int main() {  

char *wday[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};  

time_t t = time(NULL); // 获取当前时间 printf("time_t = %ld\n\n", t);  

struct tm *tt = gmtime(&t); // 转换成格林尼治时间 printf("gmtime:\n");  

printf("%d-%d-%d ", (tt->tm_year+1900), (tt->tm_mon+1), tt->tm_mday);  

printf("%s %d:%d:%d\n\n", wday[tt->tm_wday], tt->tm_hour, tt->tm_min, tt->tm_sec);  

tt = localtime(&t); // 转换成当地时间 printf("localtime:\n");  

printf("%d-%d-%d ", (tt->tm_year+1900), (tt->tm_mon+1), tt->tm_mday);  

printf("%s %d:%d:%d\n\n", wday[tt->tm_wday], tt->tm_hour, tt->tm_min, tt->tm_sec);  

time_t ttt = mktime(tt); // 将当地时间转换回 time_t 类型 printf("mktime:\n");  

printf("time_t = %ld\n", ttt); return 0;}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值