Unix時間和日期

2021-05-27 17:21:21 字數 1871 閱讀 9290

unix核心通過計算從2023年1月1日0點0分0秒紀元(utc)開始經過的秒數來提供的基本時間和日期服務。在使用者層,這個值是以time_t(在unix中以t結尾的資料型別被稱作基本系統資料型別,int的定義型別)資料型別標識的,一般被稱作日曆時間(calendar time),並通過函式time獲得當前的值。

time函式原型:

#include time_t time(time_t *timeptr);
如果引數timeptr不為null的話則返回值也儲存在它所指向的記憶體空間中。發生錯誤的話返回-1。

當獲取這個值後,就可以通過呼叫其他函式來將它轉換成可讀的日期和時間,它們之間的關係如下圖(來自unix高階環境程式設計):

struct tm結構為:

struct tm ;
localtime、gmtime和mktime的函式原型

#include struct tm *gmtime(const time_t *calptr);

struct tm *localtime(const time_t *calptr);

time_t mktime(struct tm *tmptr);

localtime函式將日曆時間轉換成本地時間而購買time則轉換為utc時間,mktime則將本地時間轉換為日曆時間。

函式ctime和actime分別以time_t和struct tm的指標資料型別為引數,返回可讀性很好的時間表示字串,函式原型為

#include char *asctime(const struct tm *tmptr);

char *ctime(const time_t *calptr);

strftime函式類似於snprintf函式,但它是專用於儲存轉換時間和日期的,並定義有特定的format,函式原型:

#include size_t strftime(char *restrict buf, size_t maxsize, const char *restrict format, const struct tm *restrict tmptr);
前3個引數和snprintf函式相同,第四個引數為struct tm結構體(通常由time函式獲得),具體的format可以通過manpage 3獲得。

上述的所有函式只能提供秒級的精度,如果想獲得更高的精度,則可以使用函式gettimeofday(微秒級精度)和clock_gettime函式(納秒級精度)。不過它們都是基於單獨的unix規範和posix規範的。

gettimeofday函式原型和相關資料結構

#include int gettimeofday(struct timeval *restrict tp, void *restrict tzp);

struct timeval ;

引數tzp在目前單獨unix規範中只能是null。

clock_gettime函式:

#include int clock_gettime(clockid_t clk_id, struct timespec *tp);

struct timespec ;

引數clk_id標識特定的時鐘(系統時鐘,程序特定時鐘,執行緒特定時鐘等),系統時鐘所有程序可見。根據系統實現(硬體軟體)的不同,獲得的精度可能也是不同的,可以通過函式clock_getres獲得特定系統的精度,而函式clock_settime則可以設定時鐘,具體可從manpage 3獲取。

將clk_id置為clock_realtime則可以獲得當前具體時間(從紀元開始)。

Linux命令date日期時間和Unix時間戳互轉

a.將日期轉換為unix時間戳 將當前時間以unix時間戳表示 date s 輸出如下 1361542433轉換指定日期為unix時間戳 date d 2013 2 22 22 14 s 輸出如下 1361542440 b.將unix時間戳轉換為日期時間 不指定日期時間的格式 date d 1361...

Linux命令date日期時間和Unix時間戳互轉

a.將日期轉換為unix時間戳 將當前時間以unix時間戳表示 date s 輸出如下 1361542433轉換指定日期為unix時間戳 date d 2013 2 22 22 14 s 輸出如下 1361542440b.將unix時間戳轉換為日期時間 不指定日期時間的格式 date d 13615...

Unix時間戳轉php日期

unix時間戳和格式化日期是我們常打交道的兩個時間表示形式,unix時間戳儲存 處理方便,但是不直觀,格式化日期直觀,但是處理起來不如unix時間戳那麼自如,所以有的時候需要互相轉換,下面給出php日期轉時間戳 mysql日期轉換函式互相轉換的幾種轉換方式 這種方式在mysql查詢語句中轉換,優點是...