ctime, _ctime32, _ctime64, _wctime, _wctime32, _wctime64

将时间值转换为字符串,并调整本地时区设置。 提供这些函数的更安全版本;请参阅 ctime_s_ctime32_s_ctime64_s_wctime_s_wctime32_s_wctime64_s

语法

char *ctime( const time_t *sourceTime );
char *_ctime32( const __time32_t *sourceTime );
char *_ctime64( const __time64_t *sourceTime );
wchar_t *_wctime( const time_t *sourceTime );
wchar_t *_wctime32( const __time32_t *sourceTime );
wchar_t *_wctime64( const __time64_t *sourceTime );

参数

sourceTime
指向要转换的存储时间的指针。

返回值

指向字符串结果的指针。 在以下情况下返回 NULL

  • sourceTime 表示 1970 年 1 月 1 日午夜前的日期(UTC 时间)。

  • 使用 _ctime32_wctime32,且 sourceTime 表示 2038 年 1 月 18 日 23:59:59 后的日期(UTC 时间)。

  • 使用 _ctime64_wctime64,且 sourceTime 表示 3000 年 12 月 31 日 23:59:59 后的日期(UTC 时间)。

ctime 是计算出 _ctime64 的内联函数,且 time_t 等同于 __time64_t。 如果需要强制编译器将 time_t 解释为旧的 32 位 time_t,你可以定义 _USE_32BIT_TIME_T。 此宏导致 ctime 计算结果为 _ctime32。 不建议使用,因为应用程序可能会在 2038 年 1 月 18 日后失效;且在 64 位平台上不允许使用它。

备注

ctime 函数将存储为 time_t 值的时间值转换为字符串。 通常情况下,通过对 time 的调用获取 sourceTime 值,它返回自协调世界时 (UTC) 1970 年 1 月 1 日午夜 (00:00:00) 以来经过的秒数。 返回值字符串正好包含 26 个字符,且格式为:

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

使用 24 小时制。 所有字段都具有固定宽度。 换行符 ('\n') 和空字符 ('\0') 占据字符串的最后两个位置。

转换的字符串同时根据本地时区设置进行调整。 若要了解如何配置本地时间,请参阅 time_ftimelocaltime 函数。 若要详细了解如何定义时区环境和全局变量,请参阅 _tzset 函数。

调用 ctime 会修改由 gmtimelocaltime 函数使用的单个静态分配的缓冲区。 每次调用这些例程都会破坏上一次调用的结果。 ctimeasctime 函数共享静态缓冲区。 因此,调用 ctime 会破坏任何上一次调用 asctimelocaltimegmtime 的结果。

_wctime_wctime64ctime_ctime64 的宽字符版本;返回指向宽字符串的指针。 否则,_ctime64_wctime_wctime64 的行为与 ctime 完全相同。

这些函数验证其参数。 如果 sourceTime 为空指针,或 sourceTime 值为负值,这些函数将调用无效参数处理程序,如参数验证中所述。 如果允许执行继续,则这些函数返回 NULL,并且将 errno 设置为 EINVAL

默认情况下,此函数的全局状态范围限定为应用程序。 若要更改此行为,请参阅 CRT 中的全局状态

一般文本例程映射

TCHAR.H 例程 _UNICODE_MBCS 未定义 _MBCS 已定义 _UNICODE 已定义
_tctime ctime ctime _wctime
_tctime32 _ctime32 _ctime32 _wctime32
_tctime64 _ctime64 _ctime64 _wctime64

要求

例程 必需的标头
ctime <time.h>
_ctime32 <time.h>
_ctime64 <time.h>
_wctime <time.h> 或 <wchar.h>
_wctime32 <time.h> 或 <wchar.h>
_wctime64 <time.h> 或 <wchar.h>

有关兼容性的详细信息,请参阅 兼容性

示例

// crt_ctime64.c
// compile with: /W3
/* This program gets the current
* time in _time64_t form, then uses ctime to
* display the time in string form.
*/

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

int main( void )
{
   __time64_t ltime;

   _time64( &ltime );
   printf( "The time is %s\n", _ctime64( &ltime ) ); // C4996
   // Note: _ctime64 is deprecated; consider using _ctime64_s
}
The time is Wed Feb 13 16:04:43 2002

另请参阅

工时管理
asctime_wasctime
ctime_s_ctime32_s_ctime64_s_wctime_s_wctime32_s_wctime64_s
_ftime_ftime32_ftime64
gmtime_gmtime32_gmtime64
localtime_localtime32_localtime64
time_time32_time64