<chrono>
函式
abs(duration)
d
如果 d >= d.zero()
傳回 ,則傳回 ,否則傳-d
回 。
語法
template <class Rep, class Period>
constexpr duration<Rep, Period> abs(duration<Rep, Period> d ); // C++17
參數
Rep
來源 duration
d
的內部表示型別。
Period
std::ratio
型別,表示一秒與來源Rep
類型的比例(也就是每秒Rep
秒)。
d
來源 duration
物件。
傳回值
d
的絕對值。
範例: abs(duration)
// compile using: /std:c++latest
#include <chrono>
#include <iostream>
int main()
{
std::cout << abs(-24h);
return 0;
}
24h
ceil(duration)
傳回大於或等於指定 duration
之目標型別中代表duration
的最小 。
語法
template<class ToDuration, class Rep, class Period>
constexpr ToDuration
ceil(const duration<Rep, Period>& d); // C++17
參數
ToDuration
目標 duration
類型。 限制為的 duration
特製化。
Rep
來源 duration
d
的內部表示型別。
Period
std::ratio
型別,表示一秒與來源Rep
類型的比例(也就是每秒Rep
秒)。
d
來源 duration
物件。
傳回值
傳回中ToDuration
可表示的最小 duration
,其大於或等於 參數 d
。
備註
ceil
除非類型是的duration
實例,ToDuration
否則不會參與多載解析。
ceil(time_point)
傳回大於或等於指定時間點之目標 duration
中可表示的最小時間點。
語法
template<class ToDuration, class Clock, class Duration>
constexpr time_point<Clock, ToDuration>
ceil(const time_point<Clock, Duration>& t); // C++17
參數
ToDuration
目標 duration
類型。 限制為的 duration
特製化。
Clock
結果和來源參數 tp
的通用時鐘類型。
Duration
duration
的類型tp
。
tp
來源 time_point
物件。
傳回值
使用 ToDuration
大於或等於 tp
的 ,傳回可表示的最小時間點。 實際上, time_point<Clock, ToDuration>(ceil<ToDuration>(tp.time_since_epoch()));
。
備註
ceil
除非類型是的duration
實例,ToDuration
否則不會參與多載解析。
clock_cast
將 time_point
一個時鐘轉換成另一個時鐘的對等 time_point
。
語法
template <class DestClock, class SourceClock, class Duration>
auto clock_cast(const time_point<SourceClock, Duration>& t); // C++20
參數
DestClock
要轉換成的 time_point
時鐘類型。
Duration
duration
的 SourceClock
,或您指定的 。
SourceClock
要轉換的時鐘類型 time_point
是以 為基礎。
t
要進行轉換的 time_point
。
傳回值
time_point
相當於t
,但專屬於 DestClock
。
備註
未明確傳遞時,可透過類別樣板自變數推算推斷的參數 SourceClock
和 Duration
。 例如,假設 clock_cast<utc_clock>(file_clock::now())
為 , SourceClock
則會推斷為 file_clock
,並 Duration
推斷為 file_clock::duration
。
從下列格式正確的時鐘轉換清單中,需要最少的轉換步驟才能從 SourceClock
選取到 DestClock
。
clock_time_conversion<DestClock, SourceClock>{}(t)
clock_time_conversion<DestClock, system_clock>{}(
clock_time_conversion<system_clock, SourceClock>{}(t))
clock_time_conversion<DestClock, utc_clock>{}(
clock_time_conversion<utc_clock, SourceClock>{}(t))
clock_time_conversion<DestClock, utc_clock>{}(
clock_time_conversion<utc_clock, system_clock>{}(
clock_time_conversion<system_clock, SourceClock>{}(t)))
clock_time_conversion<DestClock, system_clock>{}(
clock_time_conversion<system_clock, utc_clock>{}(
clock_time_conversion<utc_clock, SourceClock>{}(t)))
如需有關用途 clock_time_conversion
的詳細資訊,請參閱 clock_time_conversion
結構。
例 clock_cast
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
utc_clock::time_point t = clock_cast<utc_clock>(file_clock::now());
std::cout << t;
return 0;
}
2021-10-11 22:58:17.8540720
current_zone
取得目前的時區物件。
語法
const time_zone* current_zone(); // C++20
傳回值
呼叫 傳回 的指標 time_zone
,就像呼叫 get_tzdb().current_zone()
一樣。 如果它是時區資料庫的第一個 runtime_error
參考,且無法初始化時區資料庫,則會擲回例外狀況。
duration_cast
將 duration
轉換為指定的目標 duration
型別。
語法
template <class ToDuration, class Rep, class Period>
constexpr ToDuration
duration_cast(const duration<Rep, Period>& d); // C++11
參數
ToDuration
目標 duration
類型。 限制為的 duration
特製化。
Rep
來源 duration
d
的內部表示型別。
Period
std::ratio
型別,表示一秒與來源Rep
類型的比例(也就是每秒Rep
秒)。
d
要轉換成目標型別的來源duration
duration
物件。
傳回值
型 ToDuration
別的物件,表示 duration
d
。 如有必要,它會截斷以符合目標類型。 如果來源包含 NaN
、無限大或太大,duration
則將浮點duration
轉換成整數duration
的結果未定義。
備註
當您將分鐘數轉換成秒時,當來源期間完全可被目標期間分割時,您不需要在 duration_cast
類型之間 duration
轉換。 此外,您不需要在浮點 duration
類型之間轉換。 您可以使用一般轉換或 duration
建構函式來執行這兩個轉換。
duration_cast
除非 是的duration
實例,否則ToDuration
不會參與多載解析。 它會使用 static_cast
來執行所有轉換,而不是隱含轉換。 如果可能的話,可以避免乘法和除法。 例如,當編譯程式知道目標和來源週期的一般比率具有1的分子或分母時。 計算會在可用的最寬類型中完成,然後在完成時,將轉換成 static_cast
結果類型。
例 duration_cast
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
seconds s(1);
std::cout << duration_cast<microseconds>(s) << '\n';
std::cout << duration_cast<nanoseconds>(s) << '\n';
return 0;
}
1000000us
1000000000ns
floor(duration)
傳回目標類型中大於或等於指定 duration
的最大可duration
表示。
語法
template<class ToDuration, class Rep, class Period>
constexpr ToDuration
floor(const duration<Rep, Period>& d); // C++17
參數
ToDuration
目標 duration
類型。 限制為的 duration
特製化。
Rep
來源 duration
d
的內部表示型別。
Period
std::ratio
型別,表示一秒與來源Rep
類型的比例(也就是每秒Rep
秒)。
d
來源 duration
物件。
傳回值
傳 duration
回中 ToDuration
的最大可表示,小於或等於 參數 d
。
備註
floor
除非類型是的duration
實例,ToDuration
否則不會參與多載解析。
floor(time_point)
傳回目標 duration
中代表的最大時間點,小於或等於指定的時間點。
語法
template<class ToDuration, class Clock, class Duration>
constexpr time_point<Clock, ToDuration>
floor(const time_point<Clock, Duration>& tp); // C++17
參數
ToDuration
目標 duration
類型。 限制為的 duration
特製化。
Clock
結果和來源參數 tp
的通用時鐘類型。
Duration
duration
的類型tp
。
tp
來源 time_point
物件。
傳回值
傳回使用 ToDuration
小於或等於 tp
表示的最大時間點。 實際上, time_point<Clock, ToDuration>(floor<ToDuration>(tp.time_since_epoch()));
。
備註
floor
除非類型是的duration
實例,ToDuration
否則不會參與多載解析。
from_stream
使用指定的格式,將輸入數據流剖析為其中std::chrono
一個時間間隔類型,例如 day
、month
、weekday
month_day
、、、year
、 year_month
year_month_day
等等。
如果剖析失敗, is.setstate
則會呼叫 (ios_base::failbit
), 而且不會修改輸出參數。
// 1) day - C++20
template<class charT class traits, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
day& d, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 2) duration - C++20
template<class charT, class traits, class Rep, class Period, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
duration<Rep, Period>& dur, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 3) file_time - C++20
template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
file_time<Duration>& ft, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 4) gps_time - C++20
template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
gps_time<Duration>& gt, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 5) local_time - C++20
template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
local_time<Duration>& lt, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 6) month - C++20
template<class charT, class traits, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
month& m, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 7) month_day - C++20
template<class charT, class traits, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
month_day& md, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 8) utc_time - C++20
template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
utc_time<Duration>& ut, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 9) sys_time - C++20
template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
sys_time<Duration>& st, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 10) tai_time - C++20
template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
tai_time<Duration>& tt, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 11) weekday - C++20
template<class charT, class traits, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
weekday& wd, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 12) year - C++20
template<class charT, class traits, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
year& y, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 13) year_month - C++20
template<class charT, class traits, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
year_month& ym, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
// 14) year_month_day - C++20
template<class charT, class traits, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(
basic_istream<charT, traits>& is, const charT* fmt,
year_month_day& ymd, basic_string<charT, traits, Alloc>* abbrev = nullptr,
minutes* offset = nullptr);
範本參數
Alloc
型別,表示處理字串配置和解除分配記憶體的配置器物件。
charT
要從數據流讀取並儲存在字串中的單一字元數據類型。 C++標準連結庫提供這個類別範本的特製化,以及類型、 和 的元素類型 u16string
char
wstring
char16_t
wchar_t
定義。string
char32_t
u32string
traits
描述 charT
和 basic_istream
特製化的屬性basic_string
。
Rep
型別 duration
的內部表示型別。
Period
std::ratio
型別,表示一秒與來源Rep
類型的比例(也就是每秒Rep
秒)。
Duration
duration
用於時間特製化的型別。
參數
abbrev
如果 abbrev
不是 nullptr
,且指定格式規範 %Z
,而且剖析成功,則 abbrev
包含剖析的值。
d
如果剖析成功,則包含函式傳回時的剖析日期。
dur
duration
從資料串流剖析的 。
fmt
用來比對輸入的格式字串。 如需剖析格式選項的清單,請參閱 剖析格式字串 。
ft
file_time
從資料串流剖析的 。
gt
gps_time
從資料串流剖析的 。
is
要剖析的輸入數據流。
lt
local_time
從資料串流剖析的 。
m
month
從資料串流剖析的 。
md
month_day
從資料串流剖析的 。
offset
如果 offset
不是 nullptr
,且格式規範 %z
或已修改的變體,例如 %Ez
或 %0z
已指定,且剖析成功,則會 offset
指向剖析的值。
st
sys_time
從資料串流剖析的 。
tt
tai_time
從資料串流剖析的 。
ut
utc_time
從資料串流剖析的 。
wd
weekday
從資料串流剖析的 。
y
year
從資料串流剖析的 。
ym
year_month
從資料串流剖析的 。
ymd
year_month_day
從資料串流剖析的 。
傳回值
輸入數據流, is
範例: from_stream
// compile using: /std:c++latest
#include <chrono>
#include <iostream>
int main()
{
std::istringstream str{ "22" };
std::basic_istream<char> stream{ str.rdbuf() };
std::chrono::day d;
std::chrono::from_stream(stream, "%d", d);
std::cout << d << "\n";
return 0;
}
22
備註
7) 如果使用%Z
並成功剖析,則如果 abbrev
非 Null,則會將該值指派給 *abbrev
。 如果使用 %z
(或已修改的變體)並成功剖析,則如果 offset
非 Null,則會將該值指派給 *offset
。
12) 如果使用%Z
並成功剖析,則如果 abbrev
非 Null,則會將該值指派給 *abbrev
。 如果使用 %z
(或已修改的變體)並成功剖析,則如果 offset
非 Null,則會將該值指派給 *offset
。
from_stream
格式字串
格式可能是下列其中一個字串:
Date
規範 | 描述 |
---|---|
%D |
相當於 %m/%d/%y 。 |
%F % 否F |
相當於 %Y-%m-%d 。 如果使用寬度 N 修改,則寬度只會 %Y 套用至 。 |
%x %Ex |
地區設定的日期表示法。%Ex 剖析地區設定的替代日期表示法。1 |
Day
規範 | 描述 |
---|---|
%d %Od % 否d %e %Oe % 否e |
以十進位數表示的月份日期。% Nd 指定要讀取的最大字元數,例如 %1d 。 如果未 指定 N ,則預設值為 2。允許前置零,但不需要。 %Od (字母 O ,非零)解譯地區設定的月日替代表示法。1 %e 相當於 %d ,而且可以像 修改一樣 %d 。1 |
星期幾
規範 | 描述 |
---|---|
%a %A |
地區設定的完整或縮寫不區分大小寫的工作日名稱。%A 相當於 %a |
%u % 否u |
ISO 工作日為十進位數(1-7),其中星期一為 1。 % Nu 指定要讀取的最大字元數,例如 %2u 。 如果未 指定 N ,則預設值為 1。 允許前置零,但不需要。 |
%w % 否w %Ow |
工作日為十進位數 (0-6),其中星期日為 0。% Nw 指定要讀取的最大字元數,例如 %2w 。 如果未 指定 N ,則預設值為 1。允許前置零,但不需要。 %Ow (字母 O ,而非零)解譯地區設定的替代表示法。1 |
年份的周/日
規範 | 描述 |
---|---|
%j % 否j |
如果格式化的類型是持續時間的特製化,則沒有填補的十進位數。 否則,年份的日期會以十進位數表示。 Jan 1 為 001 。 如果結果少於三位數,則會以 0 (零) 填補為三位數。% Nj 指定要讀取的最大字元數,例如 %2j 。 如果未 指定 N ,則預設值為 3。 允許前置數位,但並非必要。 |
%U % 否U %OU |
年份的周數做為十進位數。 今年的第一個星期日是一周 01 的第一天。 當周之前的同年天數為星期 00 。 如果結果為單一數位,則會前面加上 0 (零)。% NU 指定要讀取的最大字元數,例如 %2U 。 如果未 指定 N ,則預設值為 2。允許前置零,但不需要。 %OU (字母 O ,而非零)剖析地區設定的替代表示法。1 |
%W % 否W %OW |
年份的周數做為十進位數。 今年的第一個星期一是一周 01 的第一天。 當周之前的同年天數為星期 00 。如果結果為單一數位,則會前面加上 0 (零)。% NW 指定要讀取的最大字元數,例如 %2W 。 如果未 指定 N ,則預設值為 1允許前置零,但不需要。 %OW (字母 O ,而非零)剖析地區設定的替代表示法。1 |
一天中的時間
規範 | 描述 |
---|---|
%H % 否H %OH |
小時 (24 小時制) 做為十進位數。 如果結果為單一數位,其前面會加上 0 (零)。% NH 指定要讀取的最大字元數,例如 %1H 。 如果未 指定 N ,則預設值為 2。允許前置零,但不需要。 %OH (字母 O ,而非零)剖析地區設定的替代表示法。1 |
%I % 否I %OI |
小時 (12 小時制) 做為十進位數。 如果結果為單一數位,則會前面加上 0 (零)。% NI 指定要讀取的最大字元數,例如 %1I 。 如果未 指定 N ,則預設值為 2。允許前置零,但不需要。 %OI (字母 O ,而非零)剖析地區設定的替代表示法。1 |
%M % 否M %OM |
以十進位數表示的分鐘數。 如果結果為單一數位,則會前面加上 0 (零)。% NM 指定要讀取的最大字元數,例如 %3M 。 如果未 指定 N ,則預設值為 2。允許前置零,但不需要。 %OM (字母 O ,而非零)剖析地區設定的替代表示法。1 |
%S % 否S %OS |
以十進位數表示的秒數。 如果秒數小於 10,則結果前面會加上 0 (零)。 如果輸入的有效位數不能以秒精確表示,則格式為具有固定格式的十進位浮點數。 如果函式無法在18個小數字數內轉換浮點小數秒,則其精確度為微秒。 否則,其精確度會比對輸入的有效位數。 小數點的字元會根據地區設定進行當地語系化。% NS 指定要讀取的最大字元數,例如 %3S 。 如果未 指定 N ,則預設值為 2。允許前置零,但不需要。 %OS (字母 O ,而非零)剖析地區設定的替代表示法。1 |
%p |
地區設定相當於與 12 小時制相關聯的 AM/PM 指定。 |
%r |
地區設定的12小時制時間。 |
%R |
相當於 %H:%M 。 |
%T |
相當於 "%H:%M:%S" 。 |
%X , %EX |
地區設定的時間表示法。%EX 剖析替代地區設定的時間表示法。1 |
Month
規範 | 描述 |
---|---|
%b 、 、 %B %h |
地區設定的完整或縮寫月份名稱。 如果值不包含有效的月份, format_error 則會擲回例外狀況。%h 等於 %b 。 |
%m 、 % Nm 、 %Om |
以十進位數表示的月份。 1 月為 1。% Nm 指定要讀取的最大字元數,例如 %3m 。 如果未 指定 N ,則預設值為 2。允許前置零,但不需要。 %Om (字母 O ,而非零)解譯地區設定的替代表示法。1 |
Year
規範 | 描述 |
---|---|
%C 、 % NC 、 %EC |
以十進位數表示的世紀。% NC 指定要讀取的最大字元數,例如 %1N 。 如果未 指定 N ,則預設值為 2。 允許前置零,但不需要。%EC 解譯地區設定的世紀替代表示法。 |
%y 、 % Ny 、、 %Ey 、 %Oy |
年份的最後兩個十進位數。 如果未指定世紀(例如,使用 %C ),則範圍中的值會假設參照 1969 年到 1999 年,而範圍[00, 68] 中的[69, 99] 值則假設參照到 2000 年到 2068 年。% Ny 指定要讀取的最大字元數。 如果未 指定 N ,則預設值為 2。允許前置零,但不需要。 %Ey 和 %Oy (字母 O ,而非零)解譯地區設定的替代表示法。1 |
%Y 、 % NY 、、 %EY 、 |
以十進位數表示的年份。 如果結果少於四位數,則會以 0 (零) 填補為四位數。% NY 指定要讀取的最大字元數。 如果未 指定 N ,則預設值為 4。%EY 剖析地區設定的替代全年表示法。1 |
ISO 8601 以周為基礎的年份
在 ISO 8601 中,周從星期一開始。 該年度的第一周必須包含 1 月 4 日,並包含今年的第一個星期四。
規範 | 取代 |
---|---|
%g % 否g |
ISO 周型年份的最後兩個十進位數。 如果結果為單一數位,則前面會加上 0 (零)。 % Ng 指定要讀取的最大字元數,例如 %1g 。 如果未 指定 N ,則預設值為 2 |
%G % 否G |
以 ISO 周為基礎的年份做為十進位數。 如果結果少於四位數,則會以 0 (零) 填補為四位數。 % NG 指定要讀取的最大字元數,例如 %1G 。 如果未 指定 N ,則預設值為 4 |
%V %OV % 否V |
以 ISO 周為基礎的周數做為十進位數。 如果結果為單一數位,則會前面加上 0 (零)。 % NV 指定要讀取的最大字元數,例如 %1V 。 如果未 指定 N ,則預設值為 2%OV (字母 O ,而非零)剖析地區設定的替代表示法。1 |
一般
規範 | 取代 |
---|---|
%% |
符合 % 字元 |
%c %Ec |
地區設定的日期和時間表示。%Ec 解譯地區設定的替代日期和時間表示。1 |
%n |
比對新行字元 |
%t |
比對零或一個空格符 |
%z %Ez %Oz |
格式的 [+|-]hh[mm] UTC位移。 例如, -0430 是指UTC落後4小時30分鐘,且 04 會比UTC提前4小時。%Ez 和 %Oz (字母 O ,而非零)剖 : 析小時與分鐘之間的 ,並在小時字段上呈現前置零選擇性1: [+|-]h[h][:mm] 。 例如, -04:30 是指UTC落後4小時30分鐘,而4則是指UTC之前4小時。 |
%Z |
時區縮寫或名稱。 已剖析單一單字。 這個字只能包含來自基本來源字元集的英數位元,或其中一個 _ 、、 / - 或 + 。 |
依類型標示
類別 | 規範/旗標 |
---|---|
day |
d, e |
duration |
j, H, I, M, S, r, R, T, p, (q, Q 僅適用於格式, 而不是剖析) |
file_time |
Z、z、c、x、X、D、F、g、G、j、U、V、W、Y、y、C、b、h、B、m、d、e、a、A、u、w、H、I、M、S、r、R、T、p |
gps_time |
Z、z、c、x、X、D、F、g、G、j、U、V、W、Y、y、C、b、h、B、m、d、e、a、A、u、w、H、I、M、S、r、R、T、p |
hh_mm_ss |
H、I、M、S、r、R、T、p |
local_time |
c, x, X, D, F, g, G, j, U, V, W, Y, y, C, b, h, B, m, d, e, a, A, u, w, H, I, M, S, r, R, T, p |
local_time_format_t |
z、Z、c、x、X、D、F、Y、C、y、b、B、h、m、d、e、a、A、u、w、H、I、M、S、r、R、T、p、g、G、U、V、W |
local_info |
z、Z |
month |
b、h、B、m |
month_day |
B, d, j, e, b, h, m |
month_day_last |
B, d, j, e, b, h, m |
month_weekday |
b, B, h, m, a, A, u, w |
month_weekday_last |
b, B, h, m, a, A, u, w |
sys_info |
z、Z |
sys_time |
Z、z、c、x、X、D、F、g、G、j、U、V、W、Y、y、C、b、h、B、m、d、e、a、A、u、w、H、I、M、S、r、R、T、p |
tai |
Z、z、c、x、X、D、F、g、G、j、U、V、W、Y、y、C、b、h、B、m、d、e、a、A、u、w、H、I、M、S、r、R、T、p |
utc_time |
Z、z、c、x、X、D、F、g、G、j、U、V、W、Y、y、C、b、h、B、m、d、e、a、A、u、w、H、I、M、S、r、R、T、p |
weekday |
a、A、u、w |
weekday_indexed |
a、A、u、w |
weekday_last |
a、A、u、w |
year |
Y、y、C |
year_month |
Y, y, B, g, G, h, C, b, m |
year_month_day |
D, F, g, G, j, U, V, W, Y, y, C, b, h, B, m, d, e, a, A, u, w |
year_month_day_last |
D, F, g, G, j, U, V, W, Y, y, C, b, h, B, m, d, e, a, A, u, w |
year_month_weekday |
D, F, g, G, j, U, V, W, Y, y, C, b, h, B, m, d, e, a, A, u, w |
year_month_weekday_last |
D, F, g, G, j, U, V, W, Y, y, C, b, h, B, m, d, e, a, A, u, w |
zoned_time |
z、Z、c、x、X、D、F、Y、C、y、b、B、h、m、d、e、a、A、u、w、H、I、M、S、r、R、T、p、g、G、U、V、W |
1實作目前與 strftime 一致,雖然 O
(字母 O) 且 e
已接受,但是會忽略它們。 也就是說, "%Od"
會解譯為 "%d"
。
get_leap_second_info
傳 leap_second_info
回指定時間的 。 這會提供在閏秒插入期間提供的時間是否發生的相關信息。 它也提供在1970年1月1日到指定時間之間新增的閏秒數。 當國際地球旋轉和參考系統服務(IERS)宣佈將加入閏秒(導致61秒)時,就會發生閏秒插入,以考慮測量地球旋轉所追蹤的原子時間與時間之間的差異,這是不規則的,而且正在逐漸放緩。
語法
template<class Duration>
leap_second_info
get_leap_second_info(const utc_time<Duration>& ut); // C++20
參數
ut
要取得 leap_second_info
的來源utc_time
。
傳回值
leap_second_info
傳回 ,如果 是在正閏秒插入期間,其成員is_leap_second
為 true
ut
,否則傳false
回 。 成員 elapsed
會保存 Epoch 日期 1970-01-01
與 之間的閏秒總和 ut
。 如果 is_leap_second
為 true
,則所參考 ut
的閏秒會包含在總和中 elapsed
。
get_tzdb
取得全程式時區資料庫清單中的第一個專案。
語法
const tzdb& get_tzdb(); // C++20
傳回值
傳回第一 tzdb
個對象的參考,就像呼叫 get_tzdb_list().front()
一樣。 如果它是時區資料庫的第一個 runtime_error
參考,且無法初始化時區資料庫,則會擲回例外狀況。
備註
如果尚未初始化,請在 get_tzdb
第一次存取時初始化全程式時區資料庫。 初始化時,資料庫是 tzdb_list
儲存單一初始化 tzdb
物件的 。
get_tzdb_list
取得全程式單一時區資料庫。
語法
tzdb_list& get_tzdb_list(); // C++20
傳回值
傳回全程式 tzdb_list
對象的參考。 如果無法傳回有效tzdb_list
對象的參考,則會擲runtime_error
回例外狀況。
備註
如果尚未初始化,請在 get_tzdb_list
第一次存取時初始化全程式時區資料庫。 初始化時,資料庫是 tzdb_list
儲存單一初始化 tzdb
物件的 。 函 get_tzdb_list
式是安全線程。
is_am
指定小時是否在 當天的 ante-meridiem (AM) 部分的述詞。
語法
constexpr bool is_am(const hours& h) noexcept; // C++20
參數
h
24 小時時間表示法中的來源 hours
表示法。
傳回值
如果 0h <= h && h <= 11h
為 ,則傳true
回 ,否則false
傳回 。
is_pm
指定小時是否在 當天的后梅裡迪姆 (PM)部分的述詞。
語法
constexpr bool is_pm(const hours& h) noexcept; // C++20
參數
h
24 小時時間表示法中的來源 hours
表示法。
傳回值
如果 12h <= h && h <= 23h
為 ,則傳true
回 ,否則false
傳回 。
locate_zone
取得時區名稱所指定的時區物件。
語法
const time_zone* locate_zone(string_view tz_name); // C++20
參數
tz_name
要傳回的時區名稱。
傳回值
呼叫 傳回 的指標 time_zone
,就像呼叫 get_tzdb().locate_zone(tz_name)
一樣。 如果找不到指定的時區,或它是時區資料庫的第一個 runtime_error
參考,且無法初始化時區資料庫,則會擲回例外狀況。
備註
如果尚未初始化,請在 locate_zone
第一次存取時初始化全程式時區資料庫。 初始化時,資料庫是 tzdb_list
儲存單一初始化 tzdb
物件的 。
make12
以12小時的時間表示法傳回指定的小時。
語法
constexpr hours make12(const hours& h) noexcept; // C++20
參數
h
24 小時時間表示法中的來源 hours
表示法。
傳回值
傳回範圍 [1h, 12h]
中 等於的12小時h
。 如果 h
不在範圍 [0h, 23h]
中,則傳回值未指定。
make24
以24小時的時間表示法傳回指定的小時。
語法
constexpr hours make24(const hours& h, bool is_pm) noexcept; // C++20
參數
h
以12小時時間表示法表示的來源 hours
表示法。
is_pm
來源 hours
表示法是 PM (如果 true
) 或 AM (如果 false
)。
傳回值
如果 is_pm
為 false
,make24
則傳回範圍[0h, 11h]
中 相當於的 24 小時h
,假設h
代表 AM 小時。 否則,它會傳回範圍[12h, 23h]
中 相當於的24小時h
,假設h
代表PM小時。 如果 h
不在範圍 [1h, 12h]
中,則傳回值未指定。
reload_tzdb
如果有可用的更新資訊,則重載時區資料庫。
語法
const tzdb& reload_tzdb();
傳回值
在進行時區資料庫更新之後,如果有的話, reload_tzdb
會傳回第一 tzdb
個對象的參考,就像呼叫 get_tzdb_list().front()
一樣。 如果無法傳回有效tzdb
對象的參考,則會擲runtime_error
回例外狀況。
備註
本機時區資料庫是程式第一次存取資料庫時所提供的資料庫,例如呼叫 current_zone
。 執行程式時,實作可能會更新時區資料庫。 除非程式呼叫 reload_tzdb
函式,否則更新不會以任何方式影響程式。 可能更新的時區資料庫稱為 遠程 時區資料庫。
函 reload_tzdb
式會檢查本地時區資料庫和遠程時區資料庫的版本。 如果本機和遠端資料庫的版本相同,則不會進行任何變更。 否則,遠端資料庫會推送至 所get_tzdb_list
存取的 tzdb_list
前端。 更新不會使任何指標、參考或反覆運算器失效。 函reload_tzdb
式對和get_tzdb_list().erase_after()
的get_tzdb_list().front()
呼叫是安全線程的。
remote_version
取得包含最新遠端資料庫版本的字串。
語法
string remote_version();
傳回值
傳 string
回 ,其中包含最新的遠端資料庫版本。
round(duration)
將指定的 duration
四捨五入為目標型別中最接近可 duration
表示的 。
語法
template<class ToDuration, class Rep, class Period>
constexpr ToDuration
round(const duration<Rep, Period>& d); // C++17
參數
ToDuration
目標 duration
類型。 限制為 的 duration
特製化,其中 treat_as_floating_point_v<typename ToDuration::rep>
是 false
。
Rep
來源 duration
d
的內部表示型別。
Period
std::ratio
型別,表示一秒與來源Rep
類型的比例(也就是每秒Rep
秒)。
d
來源 duration
物件。
傳回值
將最 duration
接近的 表示 ToDuration
傳回 至 參數 d
。 係結會移至偶數值,也就是 值 t
,其中 t % 2 == 0
。
備註
round
除非類型是的duration
實例,而且ToDuration
具有整數表示法,ToDuration
否則不會參與多載解析。
round(time_point)
傳回目標 duration
中表示的最接近時間點至指定的時間點。
template<class ToDuration, class Clock, class Duration>
constexpr time_point<Clock, ToDuration>
round(const time_point<Clock, Duration>& tp);
參數
ToDuration
目標 duration
類型。 限制為 的 duration
特製化,其中 treat_as_floating_point_v<typename ToDuration::rep>
是 false
。
Clock
結果和來源參數 tp
的通用時鐘類型。
Duration
duration
的類型tp
。
tp
來源 time_point
物件。
傳回值
使用 傳回表示ToDuration
的最接近時間點。tp
係結會移至偶數值,也就是 值 t
,其中 t % 2 == 0
。 實際上, time_point<Clock, ToDuration>(round<ToDuration>(tp.time_since_epoch()));
。
備註
round
除非類型是的duration
實例,ToDuration
否則不會參與多載解析。
time_point_cast
將 time_point
物件 time_point
轉換成具有不同 duration
型別的 。
語法
template <class ToDuration, class Clock, class Duration>
time_point<Clock, ToDuration>
time_point_cast(const time_point<Clock, Duration>& tp); // C++11
參數
ToDuration
目標 duration
類型。 限制為的 duration
特製化。
Clock
結果和來源參數 tp
的通用時鐘類型。
Duration
duration
的類型tp
。
tp
要 time_point
轉換成具有 型別的物件 ToDuration
。
傳回值
傳 time_point
回具有 ToDuration
型別的物件。 實際上, time_point<Clock, ToDuration>(duration_cast<ToDuration>(t.time_since_epoch()));
。
備註
除非 ToDuration
是的 duration
特製化,否則此函式不會參與多載解析。
另請參閱
<chrono>
chrono
文字
chrono
運營商
duration
類別
time_point
類別
time_zone
類別