我正在尝试使用 'time.h' 库将 UNIX 格式的时间转换为 dd.mm.yy hh:mm:ss 格式。
为此我做了:
time_t rawtime = (time_t)datatime;
struct tm ts;
ts = *localtime(&rawtime);
modifyFileHeaderList.date.day = ts.tm_mday;
modifyFileHeaderList.date.mounts = ts.tm_mon;
modifyFileHeaderList.date.year = ts.tm_year - 100;
modifyFileHeaderList.time.hour = ts.tm_hour;
modifyFileHeaderList.time.min = ts.tm_min;
modifyFileHeaderList.time.sec = ts.tm_sec;
其中 datatime 是 uint32_t 格式的数字,等于“1619424306”,对应于 UTC 时间 2021 年 4 月 26 日星期一 15:05:06,但我在小时字段“ts.tm_hour”中得到数字“8”,它应该是“ 15'。为什么我得到'8'我不明白。
显然,您的机器上设置了 UTC + 7 时区,但它
localtime()
返回本地时间,有gmtime()
.一般来说,从 C 的角度来看,本地时间的实现是平台相关的。并且没有用于此的接口。在现代 POSIX 系统上,时区信息可以从全局变量
tzname
和timezone
;