ctime, ctime_s
來自 cppreference.com
定義於標頭檔案 <time.h> |
||
(1) | ||
char* ctime( const time_t* timer ); |
(直至 C23) | |
[[deprecated]] char* ctime( const time_t* timer ); |
(自 C23 起) | |
errno_t ctime_s( char *buf, rsize_t bufsz, const time_t* timer ); |
(2) | (C11 起) |
1) 將給定時間(自紀元起)轉換為日曆本地時間,然後轉換為文字表示,如同透過呼叫 asctime(localtime(timer)) 或 asctime(localtime_r(timer, &(struct tm){0}))(自 C23 起)。 此函式已棄用,不應在新程式碼中使用。(自 C23 起)
2) 與 (1) 相同,但此函式等價於 asctime_s(buf, bufsz, localtime_s(timer, &(struct tm){0})),並且在執行時檢測到以下錯誤並呼叫當前安裝的 約束處理函式:
-
buf
或timer
是空指標 -
bufsz
小於 26 或大於 RSIZE_MAX
-
- 與所有邊界檢查函式一樣,只有當實現定義了 __STDC_LIB_EXT1__ 且使用者在包含 <time.h> 之前將 __STDC_WANT_LIB_EXT1__ 定義為整數常量 1 時,才能保證
ctime_s
可用。
結果字串具有以下格式:
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
- 年份
此函式不支援本地化。
目錄 |
[編輯] 引數
timer | - | 指向 time_t 物件的指標,指定要列印的時間 |
buf | - | 指向大小至少為 bufsz 的 char 陣列的第一個元素的指標 |
bufsz | - | 最大輸出位元組數,通常是 buf 指向的緩衝區的大小 |
[編輯] 返回值
2) 成功時返回零(在這種情況下,時間的字串表示已寫入
buf
指向的陣列),失敗時返回非零(在這種情況下,終止空字元始終寫入 buf[0],除非 buf
是空指標或 bufsz
為零或大於 RSIZE_MAX)。[編輯] 注意
ctime
返回指向靜態資料的指標,並且不是執行緒安全的。此外,它會修改可能與 gmtime 和 localtime 共享的靜態 tm 物件。POSIX 將此函式標記為過時,並推薦使用 strftime。C 標準也推薦使用 strftime 而不是 ctime
和 ctime_s
,因為 strftime
更靈活且支援區域設定。
對於導致字串長度超過 25 個字元(例如,年份為 10000)的 time_t 值,ctime
的行為是未定義的。
[編輯] 示例
執行此程式碼
可能的輸出
Tue May 26 21:51:03 2015 Tue May 26 21:51:03 2015
[編輯] 參考文獻
- C17 標準 (ISO/IEC 9899:2018)
- 7.27.3.2 ctime 函式 (p: 287-288)
- K.3.8.2.2 ctime_s 函式 (p: 454)
- C11 標準 (ISO/IEC 9899:2011)
- 7.27.3.2 ctime 函式 (p: 393)
- K.3.8.2.2 ctime_s 函式 (p: 626)
- C99 標準 (ISO/IEC 9899:1999)
- 7.23.3.2 ctime 函式 (p: 342)
- C89/C90 標準 (ISO/IEC 9899:1990)
- 4.12.3.2 ctime 函式
[編輯] 另請參閱
(C23 中已廢棄)(C11) |
將 tm 物件轉換為文字表示 (函式) |
將 tm 物件轉換為自定義文字表示形式 (函式) | |
C++ 文件,關於 ctime
|