std::asctime

来自cppreference.com
< cpp‎ | chrono‎ | c
 
 
工具库
通用工具
日期和时间
函数对象
格式化库 (C++20)
(C++11)
关系运算符 (C++20 中弃用)
整数比较函数
(C++20)(C++20)(C++20)
(C++20)
swap 与类型运算
(C++14)
(C++11)
(C++11)
(C++11)
(C++17)
常用词汇类型
(C++11)
(C++17)
(C++17)
(C++17)
(C++11)
(C++17)
(C++23)
初等字符串转换
(C++17)
(C++17)
 
 
 
在标头 <ctime> 定义
char* asctime( const std::tm* time_ptr );

转换给定日历时间 std::tm 为拥有下列固定 25 字符形式的文本表示: Www Mmm dd hh:mm:ss yyyy\n

  • Www ——星期之日的三字母英文缩写,来自 time_ptr->tm_wday ,为 MonTueWedThuFriSatSun 之一。
  • Mmm ——月名的三字母英文缩写,来自 time_ptr->tm_mon ,为 JanFebMarAprMayJunJulAugSepOctNovDec 之一。
  • 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::asctimestd::ctime 之间共享,而且可能在每次调用任何这些函数时被重写。

注意

此函数返回指向静态数据的指针,且非线程安全。 POSIX 标记此函数为过时,并推荐使用 std::strftime 替代。

POSIX 限制了仅当输出字符串将长于 25 字符时、 timeptr->tm_wdaytimeptr->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)
按照指定格式格式化并输出日期/时间值
(函数模板)