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、 _ftime和 localtime 函式會配置於本地時間和 _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( <ime );
err = _wctime_s( buf, SIZE, <ime );
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 對等用法
請參閱
參考
ctime、_ctime32、_ctime64、_wctime、_wctime32、_wctime64
gmtime_s、_gmtime32_s、_gmtime64_s