共用方式為


ctime_s、_ctime32_s、_ctime64_s、_wctime_s、_wctime32_s、_wctime64_s

轉換時間值成字串並為當地時區調整。 這些是 ctime、 _ctime64、_wctime、_wctime64 版本與安全性增強的版本,如 CRT 中的安全性功能中所述。

errno_t ctime_s( 
   char* buffer,
   size_t numberOfElements,
   const time_t *time 
);
errno_t _ctime32_s( 
   char* buffer,
   size_t numberOfElements,
   const __time32_t *time 
);
errno_t _ctime64_s( 
   char* buffer,
   size_t numberOfElements,
   const __time64_t *time )
;
errno_t _wctime_s( 
   wchar_t* buffer,
   size_t numberOfElements,
   const time_t *time 
);
errno_t _wctime32_s( 
   wchar_t* buffer,
   size_t numberOfElements,
   const __time32_t *time 
);
errno_t _wctime64_s( 
   wchar_t* buffer,
   size_t numberOfElements,
   const __time64_t *time 
);
template <size_t size>
errno_t _ctime32_s( 
   char (&buffer)[size],
   const __time32_t *time 
); // C++ only
template <size_t size>
errno_t _ctime64_s( 
   char (&buffer)[size],
   const __time64_t *time
); // C++ only
template <size_t size>
errno_t _wctime32_s( 
   wchar_t (&buffer)[size],
   const __time32_t *time 
); // C++ only
template <size_t size>
errno_t _wctime64_s( 
   wchar_t (&buffer)[size],
   const __time64_t *time 
); // C++ only

參數

  • [out] buffer
    必須夠大保留 26 個字元。 對字串結果的指標,或 NULL 如果:

    • time 代表 1970 年 1 月 1 日,UTC 午夜之前的日期。

    • 如果您使用 _ctime32_s 或 _wctime32_s 和 time 代表在 2038 年 1 月 19 日 03:14:07 之後的日期。

    • 如果您使用 _ctime64_s 或 _wctime64_s 和 time 代表在 3000 年 12 月 31 日 23:59:59 之後的日期。

    • 如果您使用 _ctime_s 或 _wctime_s,這些函式是包裝函式到前一個函式。 請參閱<備註>一節。

  • [in] numberOfElements
    緩衝區的大小。

  • [in] time
    要儲存時間的指標。

傳回值

如果成功,則為零。 如果有失敗是因為無效的參數,不正確的參數叫用處理常式,如 參數驗證中所述。 如果允許繼續執行會回傳一個錯誤碼。 錯誤碼在 ERRNO.H 中定義;如需這些錯誤的清單,請參閱 errno。 為每個錯誤條件擲出的實際錯誤碼如下表中所示。

錯誤狀況

buffer

numberOfElements

time

傳回

在 buffer 的值

NULL

any

any

EINVAL

未修改

不是 NULL (指向有效的記憶體)

0

any

EINVAL

未修改

非NULL

0< size < 26

any

EINVAL

空字串

非NULL

>= 26

NULL

EINVAL

空字串

非NULL

>= 26

< 0

EINVAL

空字串

備註

ctime_s 函式將時間值儲存為 time_t 結構至字串。 time 值通常取自對 時間 的呼叫,傳回本地時間1970 年 1 月 1 日午夜算起的秒數 (00:00: 00),Coordinated Universal Time (UTC)。 傳回值字串完全包含 26 個字元且具有表單:

Wed Jan 02 02:03:55 1980\n\0

使用 24 小時制。 所有欄位具有相同的寬度。 新行字元('\n')和 null 字元(\0'')佔用字串的最後位置。

要轉換的字元字串也會根據當地時區設定調整。 如需定義時區環境和全域變數的詳細資訊,請參閱 time、 _ftimelocaltime 函式會配置於本地時間和 _tzset 函式的相關資訊。

_wctime32_s 和 _wctime64_s 是 _ctime32_s 和 _ctime64_s 的寬字元版本,傳回寬字元字串的指標。 否則 _ctime64_s 和、 _wctime32_s 和 _wctime64_s 與 _ctime32_s 的行為相同。

ctime_s 是 _ctime64_s和 time_t的評估與 __time64_t相等的內嵌函式。 如果您需要強制編譯器解譯 time_t做為舊 32 位元 time_t,您可以定義 _USE_32BIT_TIME_T。 這麼做會使 ctime_s評估為 _ctime32_s。 並不建議這麼做,因為您的應用程式可能在 2038 年 1 月 18 日之後無法使用,且它在 64 位元平台上是不允許的。

在 C++ 中,這些函式的使用被簡化為使用樣板多載;使用多載可以自動推斷緩衝區的大小而不必在參數中指明大小。 如需詳細資訊,請參閱安全範本多載

一般文字常式對應

TCHAR.H 常式

_UNICODE & _MBCS 未定義

_MBCS 已定義

_UNICODE 已定義

_tctime_s

ctime_s

ctime_s

_wctime_s

_tctime32_s

_ctime32_s

_ctime32_s

_wctime32_s

_tctime64_s

_ctime64_s

_ctime64_s

_wctime64_s

需求

常式

必要的標頭

ctime_s,

_ctime32_s,

_ctime64_s

<time.h>

_wctime_s,

_wctime32_s,

_wctime64_s

<time.h> or <wchar.h>

如需其他相容性資訊,請參閱<簡介>中的相容性

程式庫

C 執行階段程式庫的所有版本。

範例

// crt_wctime_s.c
/* This program gets the current
 * time in time_t form and then uses _wctime_s to
 * display the time in string form.
 */

#include <time.h>
#include <stdio.h>

#define SIZE 26

int main( void )
{
   time_t ltime;
   wchar_t buf[SIZE];
   errno_t err;

   time( &ltime );

  
   err = _wctime_s( buf, SIZE, &ltime );
   if (err != 0)
   {
      printf("Invalid Arguments for _wctime_s. Error Code: %d\n", err);
   }
   wprintf_s( L"The time is %s\n", buf );
}

範例輸出

The time is Fri Apr 25 13:03:39 2003

.NET Framework 對等用法

請參閱

參考

時間管理

asctime_s、_wasctime_s

ctime、_ctime32、_ctime64、_wctime、_wctime32、_wctime64

_ftime、_ftime32、_ftime64

gmtime_s、_gmtime32_s、_gmtime64_s

localtime_s、_localtime32_s、_localtime64_s

time、_time32、_time64