共用方式為


<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
durationSourceClock,或您指定的 。

SourceClock
要轉換的時鐘類型 time_point 是以 為基礎。

t
要進行轉換的 time_point

傳回值

time_point相當於t,但專屬於 DestClock

備註

未明確傳遞時,可透過類別樣板自變數推算推斷的參數 SourceClockDuration 。 例如,假設 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
要轉換成目標型別的來源durationduration物件。

傳回值

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一個時間間隔類型,例如 daymonthweekdaymonth_day、、、yearyear_monthyear_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++標準連結庫提供這個類別範本的特製化,以及類型、 和 的元素類型 u16stringcharwstringchar16_twchar_t定義。string char32_tu32string

traits
描述 charTbasic_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 ,而且可以像 修改一樣 %d1

星期幾

規範 描述
%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 1001。 如果結果少於三位數,則會以 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_secondtrue ut ,否則傳false回 。 成員 elapsed 會保存 Epoch 日期 1970-01-01與 之間的閏秒總和 ut。 如果 is_leap_secondtrue,則所參考 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_pmfalsemake24則傳回範圍[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 類別