std::put_time()函数

此函数首先通过构造一个类型为basic_ostream::sentry的对象来访问输出序列。
然后(如果评估计算 sentry 对象为 true),它调用 time_put::put(使用流的选定区域设置)来执行格式化和插入操作,

相应地调整流的内部状态标志。 最后,它在返回之前销毁 sentry 对象。

它用于插入由tmb指向的时间和日期信息的表示,根据参数fmt指定来格式化。

声明

以下是 std::put_time 函数的声明。

template <class charT>
/*unspecified*/ put_time (const struct tm* tmb, const charT* fmt);

参数

  • tmb − 指向类型struct tm的对象的指针,具有格式化的日期和时间信息。 struct tm<ctime>头中定义的类。

  • fmttime_put::put 使用C字符串作为格式字符串。它包含常规字符和特殊格式说明符的任意组合。这些格式说明符被函数替换为相应的值,以表示在tmb中指定的时间。

格式都以百分比()符号开头,如下所示 -

说明符 替换 示例
%a 工作日名称的缩写 * Thu
%A 完整工作日名称 * Thursday
%b 月份名称缩写 * Aug
%B 完整月份名称 * August
%c 日期和时间表示 Thu Aug 23 14:55:02 2019
%C 年份除以100,并截断为整数(00-99) 20
%d 月份中的某一天,用零填充(01-31) 23
%D MM/DD/YY日期的简写,相当于%m/%d/%y 08/23/19
%e 月份中的某日,空格填充(1-31) 23
%F YYYY-MM-DD日期的简写,相当于%Y-%m-%d
%g 基于周的年份,后两位数字(00-99) 01
%G 一年中周 2001
%h 月份名称的缩写(与%b相同) Aug
%H 24小时格式(00-23) 14
%I 12小时格式(01-12) 02
%j 一年中的某日(001-366) 235
%m 月份的十进制数(01-12) 08
%M 分钟(00-59) 56
%n 新行字符('/n'
%p 指定AM或PM PM
%r 12小时时钟时间 02:55:02 pm
%R 24小时HH:MM时间,相当于%H:%M 14:51
%S 秒(00-61) 02
%t 水平制表符(’/t’)
%T ISO 8601时间格式 (HH:MM:SS),相当于%H:%M:%S
%u ISO 8601工作日,星期一的数字为11-7 4
%U 周数,以第一个星期日为第一周的第一天(00-53) 33
%V ISO 8601周编号(00-53) 34
%w 工作日,使用十进制数,星期日为00-6 4
%W 周数,第一个星期一作为第一周的第一天(00-53)
%x 日期的表示 08/23/01
%X 时间的表示 14:55:02
%y 年份,最后两位数字(00-99) 01
%Y 年份,四位数字 2001
%z ISO 8601偏离UTC在时区(1分钟=1,1小时=100) +100
%Z 时区名称或缩写 CDT
%% %符号 %

示例

下面的例子解释了 put_time 函数的使用。

#include <iostream>
#include <iomanip>
#include <ctime>
#include <chrono>

int main () {
   using std::chrono::system_clock;
   std::time_t tt = system_clock::to_time_t (system_clock::now());

   struct std::tm * ptm = std::localtime(&tt);
   std::cout << "Now (local time): " << std::put_time(ptm,"%c") << '/n';

   return 0;
}

上一篇: std::get_time()函数 下一篇: C++ <basic_ios>