一、先從結(jié)構(gòu)體看起
struct tm
{
int tm_sec; /* 秒 – 取值區(qū)間為[0,59] /
int tm_min; / 分 - 取值區(qū)間為[0,59] /
int tm_hour; / 時(shí) - 取值區(qū)間為[0,23] /
int tm_mday; / 一個(gè)月中的日期 - 取值區(qū)間為[1,31] /
int tm_mon; / 月份(從一月開(kāi)始,0代表一月) - 取值區(qū)間為[0,11] /
int tm_year; / 年份,其值等于實(shí)際年份減去1900 /
int tm_wday; / 星期 – 取值區(qū)間為[0,6],其中0代表星期天,1代表星期一,以此類推 /
int tm_yday; / 從每年的1月1日開(kāi)始的天數(shù) – 取值區(qū)間為[0,365],其中0代表1月1日,1代表1月2日,以此類推 /
int tm_isdst; / 夏令時(shí)標(biāo)識(shí)符,實(shí)行夏令時(shí)的時(shí)候,tm_isdst為正。不實(shí)行夏令時(shí)的進(jìn)候,tm_isdst為0;不了解情況 時(shí),tm_isdst()為負(fù)。*/
};
月份為0-11
年份又是從1900年開(kāi)始
星期又是0~6
time_t
time_t卻是從1970/1/1 000開(kāi)始的秒數(shù)
二、再?gòu)闹攸c(diǎn)轉(zhuǎn)換函數(shù)看起
timegm()和gmtime_r()
timegm()是將struct tm結(jié)構(gòu)體轉(zhuǎn)換為time_t,直接時(shí)間計(jì)算
gmtime_r()是將time_t轉(zhuǎn)換為struct tm結(jié)構(gòu)體數(shù)據(jù)
mktime()和localtime_r()
mktime先調(diào)用timegm()轉(zhuǎn)換為time_t,再減去時(shí)區(qū)
localtime_r()先加上時(shí)區(qū)值,再調(diào)用gmtime_r()轉(zhuǎn)換為結(jié)構(gòu)體
三、再談time格式化字符:
ctime(),ctime_r(),asctime()最終都是調(diào)用asctime_r()
四、再?gòu)牡讓域?qū)動(dòng)看起,
1.實(shí)際的硬件時(shí)間:
-# 實(shí)際年份-1900年-100的年份 = 實(shí)際年份-2000年,
-# 其他時(shí)間為本地時(shí)分秒
相當(dāng)于本地時(shí)間:2023/11/23 19:03:00 實(shí)際存儲(chǔ)到硬件為23/11/23 19:03:00
在網(wǎng)上搜到一篇文章,就說(shuō)的windows和linux系統(tǒng)硬件存儲(chǔ)的實(shí)際時(shí)間也是本地時(shí)間
五、硬件時(shí)間轉(zhuǎn)換與timestamp相互轉(zhuǎn)換
在get_rtc_timestamp中mktime()將底層硬件時(shí)間(帶時(shí)區(qū))轉(zhuǎn)換為相對(duì)1970/1/1 000的秒數(shù)(不帶時(shí)區(qū)),
重點(diǎn):mktime()將struct tm * t結(jié)構(gòu)時(shí)間減去時(shí)區(qū)值
在set_rtc_time_stamp中l(wèi)ocaltime()將相對(duì)1970/0/0 000的秒數(shù)(不帶時(shí)區(qū))轉(zhuǎn)換為struct tm結(jié)構(gòu)體數(shù)據(jù)(帶時(shí)區(qū))
六、time()和stime函數(shù)
time()調(diào)用_control_rtc()→最終調(diào)用get_rtc_timestamp()
stime函數(shù)調(diào)用_control_rtc()→最終調(diào)用set_rtc_timestamp()
總結(jié):
底層硬件時(shí)間與tm結(jié)構(gòu)體時(shí)間都是有區(qū)別,各處應(yīng)使用tm結(jié)構(gòu)體時(shí)間(應(yīng)為1900年到現(xiàn)在的時(shí)間)
-
Linux系統(tǒng)
+關(guān)注
關(guān)注
4文章
593瀏覽量
27397 -
RTC
+關(guān)注
關(guān)注
2文章
538瀏覽量
66528 -
STM32L4
+關(guān)注
關(guān)注
1文章
42瀏覽量
9413
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論