std::asctime
定义于头文件 <ctime>
|
||
char* asctime( const std::tm* time_ptr ); |
||
转换给定日历时间 std::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
—— 2 位数月之日 ,来自 timeptr->tm_mday ,如同 sprintf 用 %2d 打印hh
—— 2 位小时,来自 timeptr->tm_hour ,如同 sprintf 用 %.2d 打印mm
—— 2 位分,来自 timeptr->tm_min ,如同 sprintf 用 %.2d 打印ss
—— 2 位秒,来自 timeptr->tm_sec ,如同 sprintf 用 %.2d 打印yyyy
—— 4 位年,来自 timeptr->tm_year + 1900 ,如同 sprintf 用 %4d 打印
若 *time_ptr 的任何成员在其正常范围外,则行为未定义。
若 time_ptr->tm_year 所指示的日历年份多于 4 位数字或小于 1000 年,则行为未定义。
函数不支持本地化,而写不能移除换行符。
函数修改静态存储,而且不是线程安全的。
参数
time_ptr | - | 指向指定要打印时间的 std::tm 对象的指针 |
返回值
指向空终止字符串的指针,字符串保有日期和时间的文本表示。字符串可能在 std::asctime
与 std::ctime 之间共享,而且可能在每次调用任何这些函数时被重写。
注意
此函数返回指向静态数据的指针,且非线程安全。 POSIX 标记此函数为过时,并推荐使用 std::strftime 替代。
POSIX 限制了仅当输出字符串将长于 25 字符时、 timeptr->tm_wday
或 timeptr->tm_mon
不在预期范围时,或 timeptr->tm_year
超过 INT_MAX-1990 时是未定义行为。
一些实现把 timeptr->tm_mday==0 处理成上个月最后一天的含义。
示例
运行此代码
#include <ctime> #include <iostream> int main() { std::time_t result = std::time(NULL); std::cout << std::asctime(std::localtime(&result)); }
输出:
Mon Apr 3 20:26:26 2017
参阅
转换 time_t 对象为文本表示 (函数) | |
转换 tm 对象到自定义的文本表示 (函数) | |
(C++11) |
按照指定格式格式化并输出日期/时间值 (函数模板) |