名稱空間
變體
操作

ctime, ctime_s

來自 cppreference.com
< c‎ | 時間
定義於標頭檔案 <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})),並且在執行時檢測到以下錯誤並呼叫當前安裝的 約束處理函式
  • buftimer 是空指標
  • 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 - 星期幾(MonTueWedThuFriSatSun 之一)。
  • Mmm - 月份(JanFebMarAprMayJunJulAugSepOctNovDec 之一)。
  • dd - 月份中的日期
  • hh - 小時
  • mm - 分鐘
  • ss - 秒
  • yyyy - 年份

此函式不支援本地化。

目錄

[編輯] 引數

timer - 指向 time_t 物件的指標,指定要列印的時間
buf - 指向大小至少為 bufsz 的 char 陣列的第一個元素的指標
bufsz - 最大輸出位元組數,通常是 buf 指向的緩衝區的大小

[編輯] 返回值

1) 指向靜態空終止字串的指標,該字串包含日期和時間的文字表示。該字串可能在 asctimectime 之間共享,並且在每次呼叫這些函式時都可能被覆蓋。
2) 成功時返回零(在這種情況下,時間的字串表示已寫入 buf 指向的陣列),失敗時返回非零(在這種情況下,終止空字元始終寫入 buf[0],除非 buf 是空指標或 bufsz 為零或大於 RSIZE_MAX)。

[編輯] 注意

ctime 返回指向靜態資料的指標,並且不是執行緒安全的。此外,它會修改可能與 gmtimelocaltime 共享的靜態 tm 物件。POSIX 將此函式標記為過時,並推薦使用 strftime。C 標準也推薦使用 strftime 而不是 ctimectime_s,因為 strftime 更靈活且支援區域設定。

對於導致字串長度超過 25 個字元(例如,年份為 10000)的 time_t 值,ctime 的行為是未定義的。

[編輯] 示例

#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 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