Megosztás a következőn keresztül:


clock_time_conversion Struct

Egy tulajdonság, amely meghatározza, hogyan alakíthat át egy time_point óratípust egy másikra, miközben fenntartja az ezzel egyenértékű időpontot.

Szemantika

// 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>;

Sablonparaméterek

Clock
Egy óratípus, amelyről áttérhet a forrásra vagy a típusra.

Dest
Az átalakítandó óra típusa.

Source
A konvertálni kívánt óratípus.

A tulajdonságok a következő konverziókat biztosítják:

1) Egy üres szerkezet, amely csak azért van meghatározva, hogy specializált legyen.
2–4) Identitásátalakítások. Ugyanazt az órát adja vissza, mint a megadott óra.
5-6) Konvertálás a hívások és sys_time a hívások utc_time közöttutc_clock::to_sys, vagy utc_clock::from_sys az átalakítás irányától függően.
7-8) A konvertálás a megadott óra között sys_time , amikor a megadott óra támogatja to_sys , és from_sysaz átalakítás irányától függően hívást Clock::to_sysClock::from_syseredményez.
9–10) Konvertálás a megadott óra és óra között utc_time , amikor a megadott óra támogatja from_utc , és to_sysaz átalakítás irányától függően hívást Clock::to_utcClock::from_utceredményez.

Tagok

Név Leírás
operator () Az egyik time_point óráról a másikra konvertálja az egyiket.

Megjegyzések

Ezt a tulajdonságot általában nem fogja közvetlenül használni a kódban. A konvertálási clock_cast függvény használja.

Követelmények

Fejléc:<chrono>

Névtér:std::chrono

Fordító beállítás:/std:c++latest

operator()

Átalakít egy óratípust time_point egy másikra, miközben fenntartja az ezzel egyenértékű időpontot.

Szemantika

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;

Paraméterek

t
Az átalakítandó time_point.

Visszaadott érték

1-3) Identitásátalakítások. Nincs átalakítás. Módosítások nélkül ad t vissza.
4) Visszaadja utc_clock::to_sys(t).
5) Visszaadja utc_clock::from_sys(t).

Levonási útmutatók

A következő levonási útmutatók érhetők el 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) Csak akkor vesz részt a túlterhelés feloldásában, ha Clock támogatja from_sys() és visszaadja time_point<Clock, Duration>.
2) Csak akkor vesz részt a túlterhelés feloldásában, ha Clock támogatja to_sys() és visszaadja sys_time<Duration>.
3) Csak akkor vesz részt a túlterhelés feloldásában, ha Clock támogatja from_utc() és visszaadja time_point<Clock, Duration>.
4) Csak akkor vesz részt a túlterhelés feloldásában, ha Clock támogatja to_utc() és visszaadja utc_time<Duration>.

Példa: 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

Lásd még

<chrono>
clock_cast
fejlécfájlokra vonatkozó referencia