?
This document uses PHP Chinese website manual Release
在頭文件<time.h>中定義 | ||
---|---|---|
char * ctime(const time_t * time); | (1) | |
errno_t ctime_s(char * buffer,rsize_t bufsz,const time_t * time); | (2) | (自C11以來) |
1)將時間以來的給定時間轉(zhuǎn)換為當?shù)厝諝v,然后轉(zhuǎn)換為文本表示,就像通過調(diào)用一樣asctime(localtime(time))
。
2)與(1)相同,只是該函數(shù)等同于asctime_s(buffer, bufsz, localtime_s(time, &(struct
tm){0}))
,并且在運行時檢測到以下錯誤并調(diào)用當前安裝的約束處理程序函數(shù):
buffer
或者time
是空指針
bufsz
小于26
或大于RSIZE_MAX
與所有邊界檢查的函數(shù)一樣,ctime_s
只有__STDC_LIB_EXT1__
在實現(xiàn)定義并且用戶在包含之前定義__STDC_WANT_LIB_EXT1__
為整數(shù)常量時1
才能保證可用time.h
。
結(jié)果字符串具有以下格式:
Www Mmm dd hh:mm:ss yyyy\n
Www
-一周的一天(之一Mon
,Tue
,Wed
,Thu
,Fri
,Sat
,Sun
)。
Mmm
-月(一Jan
,Feb
,Mar
,Apr
,May
,Jun
,Jul
,Aug
,Sep
,Oct
,Nov
,Dec
)。
dd
- 每月的一天
hh
- 小時
mm
- 分鐘
ss
- 秒
yyyy
- 年
該功能不支持本地化。
時間 | - | 指向指定打印時間的time_t對象的指針 |
---|---|---|
緩沖 | - | 指向大小至少為bufsz的char數(shù)組元素的指針 |
bufsz | - | 最大輸出字節(jié)數(shù),通常是緩沖區(qū)指向的緩沖區(qū)的大小 |
1)指向保存日期和時間文本表示的靜態(tài)空終止字符串的指針。該字符串可以在asctime
和之間共享ctime
,并且可以在每次調(diào)用這些函數(shù)時被覆蓋。
2)成功時為零(在這種情況下,時間的字符串表示已經(jīng)寫入到所指向的數(shù)組buffer
),或者在失敗時為非零(在這種情況下,終止空字符總是被寫入,buffer[0]
除非buffer
是空指針或者bufsz
是零或大于RSIZE_MAX。
ctime
返回一個指向靜態(tài)數(shù)據(jù)的指針并且不是線程安全的。此外,它修改靜態(tài)tm
其可以與共享對象gmtime
和localtime
。POSIX將此功能標記為廢棄,并推薦strftime
使用。C標準也建議strftime
不要使用ctime
,ctime_s
因為strftime
它更靈活且對語言環(huán)境敏感。
ctime
time_t的值的行為可能未定義,導(dǎo)致字符串長于25個字符(例如,年份10000)。
#define __STDC_WANT_LIB_EXT1__ 1#include <time.h>#include <stdio.h> int main(void){ time_t result = time(NULL); printf("%s", ctime(&result)); #ifdef __STDC_LIB_EXT1__ char str[26]; ctime_s(str,sizeof str,&result); printf("%s", str);#endif}
輸出:
Tue May 26 21:51:03 2015Tue May 26 21:51:03 2015
C11標準(ISO / IEC 9899:2011):
7.27.3.2 ctime函數(shù)(p:393)
K.3.8.2.2 ctime_s函數(shù)(p:626)
C99標準(ISO / IEC 9899:1999):
7.23.3.2 ctime函數(shù)(p:342)
C89 / C90標準(ISO / IEC 9899:1990):
4.12.3.2 ctime函數(shù)