asctime, asctime_s
来自cppreference.com
定义于头文件 <time.h>
|
||
char* asctime( const struct tm* time_ptr ); |
(1) | |
errno_t asctime_s(char *buf, rsize_t bufsz, const struct tm *time_ptr); |
(2) | (C11 起) |
1) 将给定的日历时间 *time_ptr 转换成下列固定的 25 字符文本表示:Www Mmm dd hh:mm:ss yyyy\n
Www
- 三字母英文星期缩写,来自 time_ptr->tm_wday ,为Mon
、Tue
、Wed
、Thu
、Fri
、Sat
、Sun
之一。Mmm
- 三字母英文月份缩写,来自 time_ptr->tm_mon,为Jan
、Feb
、Mar
、Apr
、May
、Jun
、Jul
、Aug
、Sep
、Oct
、Nov
、Dec
之一。dd
- 月份日期的 2 位数字,来自 time_ptr->tm_mday ,如 sprintf 用 %2d 打印。hh
- 小时的 2 位数字,来自 time_ptr->tm_hour ,如 sprintf 用 %.2d 打印。mm
- 分的 2 位数字,来自 time_ptr->tm_min ,如 sprintf 用 %.2d 打印。ss
- 秒的 2 位数字,来自 time_ptr->tm_sec ,如 sprintf 用 %.2d 打印。yyyy
- 年的 4 位数字,来自 time_ptr->tm_year + 1900 ,如 sprintf 用 %4d 打印。
若 *time_ptr 的任何成员在正常范围外,则行为未定义。
若 time_ptr->tm_year 所指示的日历年份多于 4 位数字或小于 1000 年,则行为未定义。
此函数不支持本地化,而且换行符无法移除。
此函数修改静态存储,而且是非线程安全的。
2) 同 (1) ,除了消息被复制到用户提供的存储区
buf
,它保证是空终止的,并在运行时检测下列错误,并调用当前安装的制约处理函数:
-
buf
或time_ptr
是空指针 -
bufsz
小于 26 或大于 RSIZE_MAX - 至少有一个 *time_ptr 的成员在它们的正常范围外
- time_ptr->tm_year 所指示的年份小于 0 或大于 9999
-
- 同所有边界检查函数,
asctime_s
仅若实现定义了 __STDC_LIB_EXT1__ ,且用户在包含time.h
前定义 __STDC_WANT_LIB_EXT1__ 为整数常量 1 才保证可用。
参数
time_ptr | - | 指向指定要打印的时间的 struct tm 对象 |
buf | - | 指向用户提供的至少有 26 字节长度的缓冲区 |
bufsz | - | 用户提供的缓冲区大小 |
返回值
2) 成功时为零,失败时为非零,失败的情况下设置 buf[0] 为零(除非
buf
是空指针或 bufsz
是零或大于 RSIZE_MAX )。注意
此函数返回指向静态数据的指针,而且是非线程安全的。POSIX 将此函数标为弃用,并推荐 strftime 以替代。C 标准亦推荐用 strftime 替代 asctime
和 asctime_s
,因为 strftime
更有适应性,并且关乎本地环境。
POSIX 限制了仅当输出字符串将长于 25 字符时、 timeptr->tm_wday
或 timeptr->tm_mon
不在预期范围时,或 timeptr->tm_year
超过 INT_MAX-1990 时是未定义行为。
一些实现把 timeptr->tm_mday==0 处理成上个月最后一天的含义。
示例
运行此代码
可能的输出:
Tue May 26 21:51:50 2015 Tue May 26 21:51:50 2015
引用
- C11 standard (ISO/IEC 9899:2011):
- 7.27.2.1 The asctime function (p: 392-393)
- K.3.8.2.1 The asctime_s function (p: 624-625)
- C99 standard (ISO/IEC 9899:1999):
- 7.23.3.1 The asctime function (p: 341-342)
- C89/C90 standard (ISO/IEC 9899:1990):
- 4.12.3.1 The asctime function
参阅
(C11) |
将struct time_t 对象转换成文本展示 (函数) |
将 struct tm 对象转换成自定义文本表示 (函数) |