asctime, asctime_s
来自cppreference.com
                    
                                        
                    
                    
                                                            
                    | 在标头  <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 的 2 位月之日,如同由 sprintf 以 %2d 打印
- hh——来自 timeptr->tm_hour 的 2 位时,如同由 sprintf 以 %.2d 打印
- mm——来自 timeptr->tm_min 的 2 位分,如同由 sprintf 以 %.2d 打印
- ss——来自 timeptr->tm_sec 的 2 位秒,如同由 sprintf 以 %.2d 打印
- yyyy——来自 timeptr->tm_year + 1900 的 4 位年,如同由 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
 
-  
- 同所有边界检查函数, asctime_s仅若实现定义 __STDC_LIB_EXT1__ 且用户在包含time.h前定义 __STDC_WANT_LIB_EXT1__ 为整数常量 1 才保证可用。
参数
| 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 The asctime function (第 287 页)
 
- K.3.8.2.1 The asctime_s function (第 453-454 页)
 
- C11 标准(ISO/IEC 9899:2011):
- 7.27.2.1 The asctime function (第 392-393 页)
 
- K.3.8.2.1 The asctime_s function (第 624-625 页)
 
- C99 标准(ISO/IEC 9899:1999):
- 7.23.3.1 The asctime function (第 341-342 页)
 
- C89/C90 标准(ISO/IEC 9899:1990):
- 4.12.3.1 The asctime function
 
参阅
| (C23 中弃用)(C11) | 将 struct time_t对象转换成文本表示(函数) | 
| 将 struct tm对象转换成自定义文本表示(函数) |