©
本文档使用
php.cn手册 发布
在头文件<time.h>中定义 | ||
---|---|---|
char * ctime(const time_t * time); | (1) | |
errno_t ctime_s(char * buffer,rsize_t bufsz,const time_t * time); | (2) | (自C11以来) |
1)将时间以来的给定时间转换为当地日历,然后转换为文本表示,就像通过调用一样asctime(localtime(time))
。
2)与(1)相同,只是该函数等同于asctime_s(buffer, bufsz, localtime_s(time, &(struct
tm){0}))
,并且在运行时检测到以下错误并调用当前安装的约束处理程序函数:
buffer
或者time
是空指针
bufsz
小于26
或大于RSIZE_MAX
与所有边界检查的函数一样,ctime_s
只有__STDC_LIB_EXT1__
在实现定义并且用户在包含之前定义__STDC_WANT_LIB_EXT1__
为整数常量时1
才能保证可用time.h
。
结果字符串具有以下格式:
Www Mmm dd hh:mm:ss yyyy\n
Www
-一周的一天(之一Mon
,Tue
,Wed
,Thu
,Fri
,Sat
,Sun
)。
Mmm
-月(一Jan
,Feb
,Mar
,Apr
,May
,Jun
,Jul
,Aug
,Sep
,Oct
,Nov
,Dec
)。
dd
- 每月的一天
hh
- 小时
mm
- 分钟
ss
- 秒
yyyy
- 年
该功能不支持本地化。
时间 | - | 指向指定打印时间的time_t对象的指针 |
---|---|---|
缓冲 | - | 指向大小至少为bufsz的char数组元素的指针 |
bufsz | - | 最大输出字节数,通常是缓冲区指向的缓冲区的大小 |
1)指向保存日期和时间文本表示的静态空终止字符串的指针。该字符串可以在asctime
和之间共享ctime
,并且可以在每次调用这些函数时被覆盖。
2)成功时为零(在这种情况下,时间的字符串表示已经写入到所指向的数组buffer
),或者在失败时为非零(在这种情况下,终止空字符总是被写入,buffer[0]
除非buffer
是空指针或者bufsz
是零或大于RSIZE_MAX。
ctime
返回一个指向静态数据的指针并且不是线程安全的。此外,它修改静态tm
其可以与共享对象gmtime
和localtime
。POSIX将此功能标记为废弃,并推荐strftime
使用。C标准也建议strftime
不要使用ctime
,ctime_s
因为strftime
它更灵活且对语言环境敏感。
ctime
time_t的值的行为可能未定义,导致字符串长于25个字符(例如,年份10000)。
#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 2015Tue May 26 21:51:03 2015
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函数