?
Dokumen ini menggunakan Manual laman web PHP Cina Lepaskan
在頭文件<time.h>中定義 | ||
---|---|---|
struct tm * localtime(const time_t * time); | (1) | |
struct tm * localtime_s(const time_t *限制時間,struct tm *限制結(jié)果); | (2) | (自C11以來) |
1)以struct tm格式將歷元以來的給定時間(time_t
指向的值time
)轉(zhuǎn)換為以本地時間表示的日歷時間。結(jié)果存儲在靜態(tài)存儲器中,并返回指向該靜態(tài)存儲器的指針。
2)與(1)相同,只是該函數(shù)使用用戶提供的存儲result
結(jié)果,并且在運行時檢測到以下錯誤并調(diào)用當前安裝的約束處理函數(shù):
time
或者result
是空指針
與所有邊界檢查的函數(shù)一樣,localtime_s
只有__STDC_LIB_EXT1__
在實現(xiàn)定義并且用戶在包含之前定義__STDC_WANT_LIB_EXT1__
為整數(shù)常量時1
才能保證可用time.h
。
時間 | - | 指向要轉(zhuǎn)換的time_t對象的指針 |
---|---|---|
結(jié)果 | - | 指向結(jié)構(gòu)tm對象來存儲結(jié)果的指針 |
1)tm
成功時指向靜態(tài)內(nèi)部對象的指針,否則為空指針。該結(jié)構(gòu)可以在gmtime
,localtime
和之間共享,ctime
并且可以在每次調(diào)用時被覆蓋。
2)result
指針的副本或錯誤上的空指針(可能是運行時約束違規(guī)或?qū)⒅付〞r間轉(zhuǎn)換為本地日歷時間失?。?/p>
這個函數(shù)localtime
可能不是線程安全的。
如果由于參數(shù)太大而導(dǎo)致失敗,POSIX要求此函數(shù)設(shè)置errno
為EOVERFLOW
。
POSIX定義了一個線程安全的替代localtime_r,它與C11函數(shù)類似localtime_s
,但它不檢查其輸入?yún)?shù)的有效性。
#define __STDC_WANT_LIB_EXT1__ 1#include <time.h>#include <stdio.h> int main(void){ time_t t = time(NULL); printf("UTC: %s", asctime(gmtime(&t))); printf("local: %s", asctime(localtime(&t))); #ifdef __STDC_LIB_EXT1__ struct tm buf; char str[26]; asctime_s(str,sizeof str,gmtime_s(&t, &buf)); printf("UTC: %s", str); asctime_s(str,sizeof str,localtime_s(&t, &buf))); printf("local: %s", str);#endif}
輸出:
UTC: Tue Feb 17 18:12:09 2015local: Tue Feb 17 13:12:09 2015UTC: Tue Feb 17 18:12:09 2015local: Tue Feb 17 13:12:09 2015
C11標準(ISO / IEC 9899:2011):
7.27.3.4本地時間功能(p:394)
K.3.8.2.4 localtime_s函數(shù)(p:627)
C99標準(ISO / IEC 9899:1999):
7.23.3.4本地時間功能(p:343)
C89 / C90標準(ISO / IEC 9899:1990):
4.12.3.4本地時間功能