Dela via


clock_time_conversion Struct

Ett drag som anger hur du konverterar en time_point från en typ av klocka till en annan, samtidigt som motsvarande tidpunkt bibehålls.

Syntax

// C++20
1) template<class Dest, class Source> struct clock_time_conversion {};
2) template<class Clock> struct clock_time_conversion<Clock, Clock>;
3) template<> struct clock_time_conversion<system_clock, system_clock>;
4) template<> struct clock_time_conversion<utc_clock, utc_clock>;
5) template<> struct clock_time_conversion<system_clock, utc_clock>;
6) template<> struct clock_time_conversion<utc_clock, system_clock>;
7) template<class Clock> struct clock_time_conversion<Clock, system_clock>;
8) template<class Clock> struct clock_time_conversion<system_clock, Clock>;
9) template<class Clock> struct clock_time_conversion<Clock, utc_clock>;
10) template<class Clock> struct clock_time_conversion<utc_clock, Clock>;

Mallparametrar

Clock
En klocktyp som ska konverteras från/till.

Dest
Klocktypen som ska konverteras till.

Source
Klocktypen som ska konverteras från.

Egenskaperna ger följande konverteringar:

1) En tom struct som endast definieras så att den kan specialiseras.
2–4) Identitetskonverteringar. Returnerar samma klocka som du skickar in.
5–6) Konvertera mellan sys_time och utc_time anropar utc_clock::to_sys eller utc_clock::from_sys beroende på konverteringens riktning.
7–8) Konvertering mellan sys_time och den angivna klockan, när den angivna klockan stöder to_sys och from_sys, resulterar i ett anrop till Clock::to_sys eller Clock::from_sys, beroende på konverteringens riktning.
9–10) Konvertering mellan utc_time och den angivna klockan, när den angivna klockan stöder from_utc och to_sys, resulterar i ett anrop till Clock::to_utc eller Clock::from_utc, beroende på konverteringens riktning.

Medlemmar

Namn Beskrivning
operator () Konverterar en time_point från en klocka till en annan.

Anmärkningar

Du använder vanligtvis inte detta drag direkt i koden. Den används av konverteringsfunktionen clock_cast .

Kravspecifikation

Rubrik:<chrono>

Namespace:std::chrono

kompilatoralternativ:/std:c++latest

operator()

Konverterar en från en time_point klocktyp till en annan samtidigt som motsvarande tidpunkt bibehålls.

Syntax

1)
template <class Duration>
time_point<Clock, Duration> operator()(const time_point<Clock, Duration>& t) const;

2)
template <class Duration>
sys_time<Duration> operator()(const sys_time<Duration> & t) const;

3)
template <class Duration>
utc_time<Duration> operator()(const utc_time<Duration>& t) const;

4)
template <class Duration>
sys_time<Duration> operator()(const utc_time<Duration>& t) const;

5)
template <class Duration>
utc_time<Duration> operator()(const sys_time<Duration>& t) const;

Parameterar

t
Den time_point att konvertera.

Returvärde

1–3) Identitetskonverteringar. Ingen konvertering. Returnerar t utan ändringar.
4) Returnerar utc_clock::to_sys(t).
5) Returnerar utc_clock::from_sys(t).

Avdragsguider

Följande avdragsguider tillhandahålls för template <class Duration> operator():

1)
template <class Duration> auto operator()(const sys_time<Duration>& t) const
    -> decltype(Clock::from_sys(t));

2)
template <class Duration> auto operator()(const time_point<SourceClock, Duration>& t) const
    -> decltype(Clock::to_sys(t));

3)
template <class Duration> auto operator()(const utc_time<Duration>& t) const
    -> decltype(Clock::from_utc(t));

4)
template <class Duration> auto operator()(const time_point<Clock, Duration>& t) const
    -> decltype(Clock::to_utc(t));

1) Deltar endast i överbelastningsmatchning när Clock stöder from_sys() och returnerar time_point<Clock, Duration>.
2) Deltar endast i överbelastningsmatchning när Clock stöder to_sys() och returnerar sys_time<Duration>.
3) Deltar endast i överbelastningsmatchning när Clock stöder from_utc() och returnerar time_point<Clock, Duration>.
4) Deltar endast i överbelastningsmatchning när Clock stöder to_utc() och returnerar utc_time<Duration>.

Exempel: clock_time_conversion

#include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
    auto sd = sys_days{ 2021y / July / 26 };
    auto time = clock_time_conversion<utc_clock, system_clock>{}(sd);
    std::cout << time << "\n";
    return 0;
}
2021-07-26 00:00:00

Se även

<chrono>
clock_cast
referens för huvudfiler