localtime_r学习
转自:https://blog.csdn.net/u010087712/article/details/50731222
1.localtime_r
用来获取系统时间,运行于linux平台下。
函数原型:
struct tm *localtime_r(const time_t *timep, struct tm *result);
例子:
#include <stdio.h> #include <time.h>//需要包含该头文件 int main() { time_t time_seconds = time(0);// 秒级时间戳 struct tm now_time; localtime_r(&time_seconds, &now_time); printf("%d-%d-%d %d:%d:%d\n", now_time.tm_year + 1900, now_time.tm_mon + 1, now_time.tm_mday, now_time.tm_hour, now_time.tm_min, now_time.tm_sec); cout<<"\n"<<now_time.tm_sec<<" "<<now_time.tm_min<<" "<<now_time.tm_hour<<" "<<now_time.tm_mday<<" "<<now_time.tm_mon<<" "<<now_time.tm_year<<" "<<now_time.tm_wday<<" "<<now_time.tm_yday<<" "<<now_time.tm_isdst; } //输出结果: 2024-1-6 17:1:58 58 1 17 6 0 124 6 5 0 秒 分 时 日 月 年 星期 天
两个参数,第一个是time_t(long int类型),第二个是一个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代表一月) - 取值区间为[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()为负。*/ };