命名空间
变体
操作

std::ctime

来自 cppreference.cn
< cpp‎ | chrono‎ | c
 
 
 
 
定义于头文件 <ctime>
char* ctime( const std::time_t* time );

将给定自纪元以来的时间转换为日历本地时间,然后转换为文本表示,如同通过调用 std::asctime(std::localtime(time))。结果字符串具有以下格式:

Www Mmm dd hh:mm:ss yyyy\n
  • Www - 星期几(Mon, Tue, Wed, Thu, Fri, Sat, Sun 之一)。
  • Mmm - 月份(Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec 之一)。
  • dd - 月份中的日期。
  • hh - 小时。
  • mm - 分钟。
  • ss - 秒。
  • yyyy - 年份。

该函数不支持本地化。

目录

[编辑] 参数

time - 指向 std::time_t 对象的指针,指定要打印的时间

[编辑] 返回值

指向一个静态的以 null 结尾的字符字符串的指针,该字符串包含日期和时间的文本表示。该字符串可能在 std::asctimestd::ctime 之间共享,并且可能在这些函数每次调用时被覆盖。

[编辑] 注意

此函数返回指向静态数据的指针,并且不是线程安全的。此外,它会修改静态的 std::tm 对象,该对象可能与 std::gmtimestd::localtime 共享。POSIX 将此函数标记为已过时,并推荐使用 std::strftime

对于导致字符串长度超过 25 个字符的 std::time_t 值(例如,年份 10000),行为可能是未定义的。

[编辑] 示例

#include <cassert>
#include <cstring>
#include <ctime>
#include <iostream>
 
int main()
{
    std::time_t result = std::time(nullptr);
    std::cout << std::ctime(&result);
 
    char buffer[32];
    std::strncpy(buffer, std::ctime(&result), 26);
    assert('\n' == buffer[std::strlen(buffer) - 1]);
    std::cout << buffer;
}

可能的输出

Mon Oct 11 17:10:55 2021
Mon Oct 11 17:10:55 2021

[编辑] 参阅

std::tm 对象转换为文本表示
(函数) [编辑]
std::tm 对象转换为自定义文本表示
(函数) [编辑]
(C++11)
根据指定格式格式化并输出日期/时间值
(函数模板) [编辑]
C 文档 关于 ctime