结构体
结构体struct 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] (0代表一月) */
int tm_year; /* 年份,其值从1900开始 */
int tm_wday; /* 星期–取值区间为[0,6],其中0代表星期天 */
int tm_yday; /* 从每年的1月1日开始的天数–取值区间为[0,365],其中0代表1月1日 */
int tm_isdst; /* 夏令时标识符,实行夏令时的时候,tm_isdst为正;不实行夏令时的进候,tm_isdst为0*/
long int tm_gmtoff; /*指定了日期变更线东面时区中UTC东部时区正秒数或UTC西部时区的负秒数*/
const char *tm_zone; /*当前时区的名字(与环境变量TZ有关)*/
};
结构体struct timeval
struct timeval
{
long tv_sec;//秒
long tv_usec;//微妙
};
结构体struct timezone
struct timezone
{
int tz_minuteswest; /* 和Greewich(格林威治)时间差了多少分钟*/
int tz_dsttime; /* 日光节约时间的状态 */
}
1、mktime()
struct tm转UTC时间
mktime函数可以在只知道年月日时分秒而不知道tm_wday和tm_yday等参数时,把时间转成UTC时间,然后再使用localtime_r把UTC时间转换回struct tm,就可以得到tm_wday和tm_yday等参数。
struct tm tm_time;
time_t utc_time = mktime(&time);
2、localtime_r()
UTC时间转struct tm
struct tm tm_time;
time_t utc_time;
localtime_r(&utc_time, &tm_time);
3、gettimeofday()
获取当前时间,得到从至今的时间
struct timezone tz;
struct timeval tv;
gettimeofday(&tv, &tz);