1、数据结构
time_t 整形;在linux下为64位整型,在windows下为64位整型,可开启宏_USE_32BIT_TIME_T强制解释为32位整型。
struct tm {
int tm_sec; /* seconds after the minute - [0,59] */
int tm_min; /* minutes after the hour - [0,59] */
int tm_hour; /* hours since midnight - [0,23] */
int tm_mday; /* day of the month - [1,31] */
int tm_mon; /* months since January - [0,11] */
int tm_year; /* years since 1900 */
int tm_wday; /* days since Sunday - [0,6] */
int tm_yday; /* days since January 1 - [0,365] */
int tm_isdst; /* daylight savings time flag */
};//注意 tm_mon tm_year tm_wday tm_yday 不是从一开始,注意处理
2、转换
time => time_t (UTC)
gmtime; time_t(UTC)=>tm 时间上限是2038年或者3000年(取决于 time_t 32位还是64位)
mktime; tm(calendar)=>time_t
_mkgmtime; tm(UTC)=>time_t
localtime;time_t(UTC)=>tm(calendar)
//这些函数不是线程安全的,由于共享tm,可能发生覆盖问题
reference:
https://docs.microsoft.com/zh-cn/previous-versions/1f4c8f33(v=vs.110)?redirectedfrom=MSDN
https://docs.microsoft.com/zh-cn/previous-versions/w4ddyt9h%28v%3dvs.120%29