c++ mysql ctime_ctime(ctime函数)

ctime(ctime函数)

在头文件中定义

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它更灵活且对语言环境敏感。

ctimetime_t的值的行为可能未定义,导致字符串长于25个字符(例如,年份10000)。

#define __STDC_WANT_LIB_EXT1__ 1

#include

#include

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 2015

Tue 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函数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值