ctime、_ctime32、_ctime64、_wctime、_wctime32、_wctime64
将时间值转换为字符串并调整为本地时区设置。 提供这些函数的更多安全版本;请参见 ctime_s、_ctime32_s、_ctime64_s、_wctime_s、_wctime32_s、_wctime64_s。
char *ctime(
const time_t *timer
);
char *_ctime32(
const __time32_t *timer )
;
char *_ctime64(
const __time64_t *timer )
;
wchar_t *_wctime(
const time_t *timer
);
wchar_t *_wctime32(
const __time32_t *timer
);
wchar_t *_wctime64(
const __time64_t *timer
);
参数
- timer
存储时间的指针。
返回值
指向字符串结果的指针。 返回NULL,则:
time 表示在1970 年 1 月 1 日,午夜,UTC。
如果使用 _ctime32 或 _wctime32, time表示 2038 年 1 月 19 日 03:14:07之后的日期。
如果使用 _ctime64或 _wctime64和time 表示 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 值到字符串。 timer 值一直通过调用 时间获得,返回从(00:00 :00),1970 年 1 月 1 日,协调通用时间 (UTC)开始的秒数。 返回字符串正好包含 26 个字符并具有以下形式:
Wed Jan 02 02:03:55 1980\n\0
使用 24 小时制。 所有字段都具有一个常数的宽度。 换行符 ("\n")和空字符 (“\0") 占用字符串中最后两个位置。
转换的字符串本地根据的时区设置也会调整。 有关配置本地时间的函数,请参见 time、_ftimelocaltime32_s ,以及 _tzset 有关环境定义时区和全局变量信息的函数。
对 ctime 的调用以修改 gmtime 和 localtime 函数使用的单个静态分配的缓冲区。 每调用这些例程之一将销毁之前调用的结果。 ctime 共享与 asctime 函数的静态缓冲区。 因此,对 ctime 的调用销毁所有以前调用结果为 asctime、localtime或 gmtime。
_wctime 和 _wctime64是ctime 和_ctime64的宽字符版本;返回宽字符串指针。 除此以外,_ctime64 , _wctime和 _wctime64的行为与ctime完全相同。
这些函数验证其参数。 如果 timer是无效的指针,或者时间值是负的,则这些函数将调用无效参数处理程序,如 参数验证 中所述。 如果允许执行继续,则函数返回 NULL 并设置 errno 为 EINVAL。
一般文本例程映射
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> or <wchar.h> |
_wctime32 |
<time.h> or <wchar.h> |
_wctime64 |
<time.h> or <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( <ime );
printf( "The time is %s\n", _ctime64( <ime ) ); // C4996
// Note: _ctime64 is deprecated; consider using _ctime64_s
}
.NET Framework 等效项
请参见
参考
ctime_s、_ctime32_s、_ctime64_s、_wctime_s、_wctime32_s、_wctime64_s