asctime, asctime_s
来自 cppreference.cn
                    
                                        
                    
                    
                                                            
                    | 定义于头文件  <time.h> | ||
| (1) | ||
| char*                asctime( const struct tm* time_ptr ); | (直至 C23) | |
| [[deprecated]] char* asctime( const struct tm* time_ptr ); | (自 C23 起) | |
| errno_t asctime_s( char* buf, rsize_t bufsz, const struct tm* time_ptr ); | (2) | (C11 起) | 
1) 将给定日历时间 tm 转换为以下固定 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- 来自 timeptr->tm_mday 的两位日期,如同用 sprintf 和 %2d 打印。
- hh- 来自 timeptr->tm_hour 的两位小时,如同用 sprintf 和 %.2d 打印。
- mm- 来自 timeptr->tm_min 的两位分钟,如同用 sprintf 和 %.2d 打印。
- ss- 来自 timeptr->tm_sec 的两位秒钟,如同用 sprintf 和 %.2d 打印。
- yyyy- 来自 timeptr->tm_year + 1900 的四位年份,如同用 sprintf 和 %4d 打印。
 如果 *time_ptr 的任何成员超出其正常范围,则行为未定义。
 如果 time_ptr->tm_year 指示的日历年超过 4 位或小于 1000 年,则行为未定义。
 该函数不支持本地化,且换行符无法移除。
 该函数修改静态存储,且非线程安全。
|  此函数已废弃,不应在新代码中使用。 | (自 C23 起) | 
2) 同 (1),除了消息写入用户提供的存储 buf(保证以空字符结尾),且以下错误在运行时检测到并调用当前安装的约束处理函数
- buf 或 time_ptr 为空指针
- bufsz 小于 26 或大于 RSIZE_MAX
- *time_ptr 的所有成员都不在其正常范围内
- time_ptr->tm_year 指示的年份小于 0 或大于 9999。
 
- 如同所有边界检查函数,仅当实现定义了 __STDC_LIB_EXT1__ 且用户在包含 <time.h> 之前将 __STDC_WANT_LIB_EXT1__ 定义为整数常量 1 时,才保证 asctime_s可用。
| 目录 | 
[编辑] 参数
| time_ptr | - | 指向指定要打印时间的 tm 对象的指针 | 
| buf | - | 指向用户提供的至少 26 字节长度缓冲区的指针 | 
| bufsz | - | 用户提供的缓冲区的大小 | 
[编辑] 返回值
2) 成功时返回零,失败时返回非零,在这种情况下 buf[0] 设置为零(除非 buf 为空指针或 bufsz 为零或大于 RSIZE_MAX)。
[编辑] 注意
asctime 返回指向静态数据的指针,且非线程安全。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
[编辑] 参考
- C17 标准 (ISO/IEC 9899:2018)
- 7.27.2.1 asctime 函数 (p: 287)
 
- K.3.8.2.1 asctime_s 函数 (p: 453-454)
 
- C11 标准 (ISO/IEC 9899:2011)
- 7.27.2.1 asctime 函数 (p: 392-393)
 
- K.3.8.2.1 asctime_s 函数 (p: 624-625)
 
- C99 标准 (ISO/IEC 9899:1999)
- 7.23.3.1 asctime 函数 (p: 341-342)
 
- C89/C90 标准 (ISO/IEC 9899:1990)
- 4.12.3.1 asctime 函数
 
[编辑] 亦参见
| (C23 中已废弃)(C11) | 将 time_t 对象转换为文本表示形式 (函数) | 
| 将 tm 对象转换为自定义文本表示形式 (函数) | |
| C++ 文档 对应 asctime | |


