std::put_time 是一个 C++11 标准库函数,它可以将一个时间数据格式化为一个字符串,其原型如下:

1
2
3
template <class TChar, class TStreambuf, class Tp>
std::basic_ostream<TChar, TStreambuf>&
put_time(const std::tm* tmb, const Tp* fmt);

其中,tmb 是一个指向 tm 结构体的指针,即待格式化的时间数据;fmt 是一个常指针,指向一个 C 风格的格式化字符串。

该函数返回一个(基于所传进来的时间数据和格式化字符串而生成的)字符串的输出流对象。所以在使用时,通常需要带上 << 运算符,将输出流对象插入到合适的输出流中。如下面的例子:

1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <iomanip>
#include <ctime>

int main()
{
std::time_t now = std::time(nullptr);
std::tm tm_now = *std::localtime(&now);

std::cout << std::put_time(&tm_now, "%Y-%m-%d %H:%M:%S") << '\n';
}

这个例子中,我们首先获取了当前时间,然后调用 std::localtime 函数来获取一个 tm 类型的结构体,代表了当前时间。最后,我们调用 std::put_time 函数,将这个结构体以 "%Y-%m-%d %H:%M:%S" 的格式格式化为一个字符串,并通过 std::cout 输出。