/*********************************************
* @brief 将日历时间 struct tm 转换为 time_t
* @param buf 返回转换为文本后的结果
* @param bufsz 可写入 buf 的字节数
* @param t 要被转换的时间
* @return 错误号,0 为成功
********************************************/
errno_t ctime_s(char* buf, size_t bufsz, const time_t* t);
!subtitle:说明
将日历时间从 time_t 转换为文本形式,格式为 Www Mmm dd hh:mm:ss yyyy\n(25 个字符)。
Www - 三个字母形式的英文星期名:Mon, Tue, Wed, Thu, Fri, Sat, Sun
Mmm - 三个字母形式的英文月份名:Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec
dd - 两个数字的日期
hh - 两个数字的小时(24 小时制)
mm - 两个数字的分
ss - 两个数字的秒
yyyy - 四个数字的年
!subtitle:参数
buf - 返回转换为文本后的结果,含结尾的 \0,不得少于 26 个字节
bufsz - 可写入 buf 的字节数,不应小于 26 或大于 RSIZE_MAX
t - 要被转换的时间
!subtitle:返回值
成功时返回 0
失败时返回非 0 的错误号
#include <stdio.h>
#include <time.h>
int main(void)
{
time_t t = time(NULL);
char buf[26];
if (asctime_s(buf, 26, &t) == 0)
{
printf("%s", buf);
}
else
{
printf("转换失败\n");
}
return 0;
}
运行结果:
Thu Oct 16 02:16:15 2025
C17 standard (ISO/IEC 9899:2018):
K.3.8.2.2 The ctime_s function (p: 453-454)
C11 standard (ISO/IEC 9899:2011):
K.3.8.2.2 The ctime_s function (p: 624-625)