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>
頭中定義的類。fmt
−time_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工作日,星期一的數字爲1
(1-7
)
4
%U
週數,以第一個星期日爲第一週的第一天(00-53)
33
%V
ISO 8601周編號(00-53)
34
%w
工作日,使用十進制數,星期日爲0
(0-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;
}