時間戳與時區


時區

UTC 協調世界時,又稱世界統一時間、世界標准時間、國際協調時間。此外還有其他一些時區,例如:北京時間、美國時間。

 時間戳

Unix 時間戳是從 1970-1-1 00:00:00 UTC (北京時間1970-01-01 08:00:00)開始所經過的秒數,不考慮閏秒,又名 Unix epoch、Unix time、POSIX time。

時區與時間戳的關系

在某一個具體的時刻,時間戳只有一個,例如,筆者剛讀取了一次時間戳,該值為1567819100。在該時刻,用戶在中國、朝鮮、巴基斯坦、美國讀取的值都是一樣的,因為時間戳是相對於UTC時間的。

對於時區則有所不同,該時刻可以表示為很多時間,如下圖所示:

 

C API

C語言提供了時間戳類型和時間類型,並提供了函數用於二者之間的轉換,如下所示:

typedef long time_t;
struct tm {
    int tm_sec;
    int tm_min;
    int tm_hour;
    int tm_mday;
    int tm_mon;
    int tm_year;
    int tm_wday;
    int tm_yday;
    int tm_isdst;
};

struct tm *gmtime(time_t const *time_value); // 時間戳轉 UTC 時間
char *setlocale(int category, char const *locale); // 設置Local
struct tm *localtime(time_t const *time_value); // 時間戳轉本地時間

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM