測試環境:vmware12 pro+centos 7
1. time_t 為從公元1970 年1 月1 日0 時0 分0 秒算起至今的utc 時間所經過的秒數
2. 結構tm的定義為
struct tm;
1. time_t time(time_t *t);
該函式會返回從公元2023年1月1日的utc時間從0時0分0秒算起到現在所經過的秒數,若傳入的引數非空,此函式也會將返回值存入到t指標所指向的記憶體。2. struct tm *gmtime(const time_t *timep); / struct tm *gmtime_r(const time_t *timep, struct tm *result);
該函式返回值為未經時區轉換的時間,即utc時間,但返回值指向乙個靜態分配的結構,該結構可能會被接下來的任何日期和時間函式呼叫覆蓋。gmtime_r()函式功能與此相同,但是它可以將資料儲存到使用者提供的結構體中
3. struct tm *localtime(const time_t *timep); / struct tm *localtime_r(const time_t *timep, struct tm *result);
該函式返回值為已經轉換為當前時區的時間,即dst時間(當前時區為夏令時時,返回的時間也為夏令時),但返回值指向乙個靜態分配的結構,該結構可能會被接下來的任何日期和時間函式呼叫覆蓋。localtime_r()函式功能與此相同,但是它可以將資料儲存到使用者提供的結構體中。它不需要設定tm.
4. time_t mktime(strcut tm * timeptr);
該函式將引數timeptr所指的tm結構資料轉換為time_t資料。tm
中的標誌位
tm_isdst
會影響函式的返回值。
1為夏令時
0為非夏令時
-1則無效。
5. char *ctime(const time_t *timep);
該函式將引數timep所指的time_t結構中的資訊轉為由時區轉換成的當地時間的字串,和localtime一樣,可能會有夏令時的影響。
6. char *asctime(const struct tm * timeptr);
該函式將但會字串表示傳入引數timeptr的日期時間,tm中的標誌位tm_isdst會影響函式的返回值,若大於0則返回當前時區的夏令時,等於0則返回當前時區的標準時(冬令時)
utc 世界協調時間,又稱世界標準時間dst 夏日節約時間,所以有夏令時的冬令時的區別
#include #include int main(void)
結果: [root@bogon ~]# date
sun may 22 23:23:04 pdt 2016
[root@bogon ~]# ./main2
1463984646
sun may 22 23:24:06 2016
0mon may 23 06:24:06 2016
1sun may 22 23:24:06 2016
1463984646
1463984646
1463988246
[root@bogon ~]# date
sun may 22 22:26:08 pst 2016
[root@bogon ~]# ./main2
1463984772
sun may 22 22:26:12 2016
0mon may 23 06:26:12 2016
0sun may 22 22:26:12 2016
1463984772
1463984772
1463984772
其它 關於時間函式mktime函式夏令時的問題
在很多應用中,我們會用mktime函式進行時間準換操作,但這裡面有乙個夏令時的操作問題 我們的最終目的是把字串格式的時間轉換為內部使用的 日曆時間 即到utc 1970年1月1日零時的秒數。這裡就存在夏令時的問題。比如俄羅斯時間2008年10月26日2 30由於夏令時的跳變會經過兩次,這兩次所代表的...
日期與時間函式
1 select curdate 2select current date 3 select curdate 0 將查詢出來的日期格式轉化為數字45 select curtime 6select current time 7 select curtime 0 將查詢出來的時間格式轉化為數字 1 se...
關於用程式設計 取本地時間時,會有夏令時的坑,
zhenmu zhenmu tz gst 1 export tz zhenmu zhenmu date y m d h m s d 1583712000 2020 03 09 01 00 00 zhenmu zhenmu date y m d h m s d 1592352000 2020 06 1...