Compartir a través de


clase zoned_time

Un zoned_time es un emparejamiento de y time_zone .time_point Proporciona un time_point significado dentro de una zona horaria específica.

Sintaxis

template<class Duration, class TimeZonePtr = const time_zone*>
class zoned_time ;  // C++20

Observaciones

Siempre zoned_time hace referencia a una zona horaria válida y representa un momento dado que existe y no es ambiguo en esa zona horaria.

Miembros

Nombre Descripción
Constructores Construya un zoned_timeobjeto .
get_info Usa la zona horaria de este zoned_time para obtener información sobre el punto de tiempo de zoned_time.
get_local_time Combina la zona horaria de zoned_time con el punto de tiempo almacenado para generar la hora local en esa zona horaria.
get_sys_time Obtiene el punto de tiempo almacenado en esta zoned_time sin aplicar la zona horaria.
get_time_zone Obtiene el time_zone almacenado en este zoned_timeobjeto .
operator= Asigne el valor de otro zoned_time, o de otro zoned_timelocal_timesys_time , a este .zoned_time
operator local_time Combina la zoned_timezona horaria de con el punto de tiempo almacenado para generar la hora local en esa zona horaria.
operator sys_time Obtiene la hora almacenada en esta zoned_time sin aplicar la zona horaria.

No miembros

Nombre Descripción
operator== Determina si dos instancias de zoned_time son iguales.
operator<< Genera un objeto zoned_time en el flujo especificado.

Alias de tipo de conveniencia

Nombre Descripción
zoned_seconds Sinónimo de zoned_time<seconds>;
zoned_time::duration Duración medida en segundos. Es un sinónimo de common_type_t<Duration, seconds>;

Requisitos

Encabezado: <chrono>

Microsoft C++ admite la zoned_time clase a partir de Visual Studio 2019, versión 16.10.

Los datos de zona horaria solo están disponibles para Windows 10 versión 1903/19H1 y versiones posteriores, y Windows Server 2022 y versiones posteriores.

Espacio de nombres: std::chrono

Opción del compilador:/std:c++latest

Constructores

Construya un zoned_timeobjeto .

1) zoned_time();
2) zoned_time(const zoned_time& zt) = default;
3) explicit zoned_time(TimeZonePtr z);
4) zoned_time(const sys_time<Duration>& st);
5) explicit zoned_time(string_view name);
6) zoned_time(TimeZonePtr z, const local_time<Duration>& tp);
7) zoned_time(TimeZonePtr z, const local_time<Duration>& tp, choose c);
8) zoned_time(TimeZonePtr z, const sys_time<Duration>& st);
9) zoned_time(string_view name, const local_time<Duration>& tp);
10) zoned_time(string_view name, const local_time<Duration>& tp, choose c);
11) zoned_time(string_view name, const sys_time<Duration>& st);
12) template<class Duration, class TimeZonePtr> zoned_time(string_view name, const zoned_time<Duration>& y);
13) template<class Duration, class TimeZonePtr> zoned_time(string_view name, const zoned_time<Duration>& y, choose c);
14) template<class Duration> zoned_time(const zoned_time<Duration, TimeZonePtr>& y);
15) template<class Duration, class TimeZonePtr> zoned_time(TimeZonePtr z, const zoned_time<Duration, TimeZonePtr>& y);
16) template<class Duration, class TimeZonePtr> zoned_time(TimeZonePtr z, const zoned_time<Duration, TimeZonePtr>& y, choose);

Parámetros

c
Indica cómo controlar las horas locales ambiguas o inexistentes al convertir un local_time objeto en .sys_time Para obtener más información, consulte choose enumeración.

name
Nombre de una zona horaria.

st
con sys_time una duración especificada. Se usa para establecer la hora.

tp
con local_time una duración especificada. Se usa para establecer la hora.

y
Un zoned_time objeto copiado para construir un nuevo zoned_timeobjeto .

z
que time_zone es std::move(z)"d" en el construido zoned_time.

zt
Puntero zoned_time que es std::move(zt)"d" en el construido zoned_time.

Observaciones

1) Inicializa la zona horaria con traits::default_zone()y el valor predeterminado construye el punto de tiempo.
2) El constructor de copia predeterminado.
3) Inicializa la zona horaria con std::move(z)y el valor predeterminado construye el punto de tiempo.
4) Inicializa la zona horaria con traits::default_zone()y la hora con st.
5) Inicializa la zona horaria con traits::locate_zone(name) y el valor predeterminado construye el punto de tiempo.
6) Inicializa la zona horaria con std::move(z)y la hora convirtiendo tp como si fuese .z->to_sys(tp)
7) Inicializa la zona horaria con std::move(z)y la hora como si fuese .z->to_sys(tp, c) Consulte choose la enumeración sobre cómo afecta el parámetro c al resultado.
8) Inicializa la zona horaria con std::move(z)y la hora con st.
9) Equivalente a la construcción con {traits::locate_zone(name), tp}.
10) Equivalente a la construcción con {traits::locate_zone(name), tp, c}.
11) Equivalente a la construcción con {traits::locate_zone(name), st}.
12) Equivalente a la construcción con {traits::locate_zone(name), y}.
13) Equivalente a la construcción con {traits::locate_zone(name), y, c}. El choose parámetro , c, no tiene ningún efecto.
14) Inicializa la zona horaria desde yla zona horaria y el punto de tiempo.
15) Inicializa la zona horaria con std::move(z) y la hora desde yel punto de tiempo.
16) Equivalente a la construcción con {z, y}. El choose parámetro , c, no tiene ningún efecto.

Nota:

zoned_time no tiene un constructor de movimiento. Si se intenta mover, se produce una copia mediante el constructor de copia predeterminado.

Ejemplo: construcción de un zoned_time

A continuación se muestra cómo crear una zoned_time instancia de para la zona "Antarctica/Casey"horaria , el 15/9/2021 a las 4:45 p. m.

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
    zoned_time zt("Antarctica/Casey", sys_days{2021y/September/15d}+16h+45min);
    std::cout << zt;
    
    return 0;
}
2021-09-16 03:45:00 GMT+11

get_info

Usa la zona horaria de este zoned_time para obtener información sobre el punto de tiempo de zoned_time.

sys_info get_info() const;

Valor devuelto

sys_info que contiene el desplazamiento UTC para la zona horaria y la hora, el ajuste del horario de verano, etc.

Ejemplo: get_info

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
    zoned_time zt("Antarctica/Casey", sys_days{2021y/September/15d}+16h+45min);
    sys_info si = zt.get_info();
    std::cout << si;

    return 0;
}
begin: 2020-10-03 16:01:00, end: 32767-12-31 23:59:59, offset: 39600s, save: 0min, abbrev: GMT+11

get_local_time

Obtiene un local_time<duration> que representa la hora local dada la zoned_timezona horaria y el punto de tiempo.

local_time<duration> get_local_time() const;

Valor devuelto

El devuelto local_time es un sinónimo de time_point<local_t, duration>.

Ejemplo: get_local_time

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
    zoned_time zt("Antarctica/Casey", sys_days{2021y/September/15d}+16h+45min);
    std::cout << zt.get_info();

    return 0;
}
2021-09-16 03:45:00

get_sys_time

Obtiene la hora almacenada en para zoned_time .system_clock

sys_time<duration> get_sys_time() const;

Valor devuelto

La hora almacenada en este zoned_time, sin ningún ajuste para la zona horaria. Representa el tiempo de reloj de ancho del sistema como un time_point. El devuelto sys_time es un sinónimo de template <class Duration> time_point<system_clock Duration>;

Ejemplo: get_sys_time

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
    zoned_time zt("Antarctica/Casey", sys_days{2021y/September/15d}+16h+45min);
    std::cout << zt.get_sys_time();

    return 0;
}
2021-09-15 16:45:00

get_time_zone

Obtiene la zona horaria almacenada en este zoned_time.

TimeZonePtr get_time_zone() const;

Valor devuelto

Puntero al time_zone almacenado en este zoned_time.

Ejemplo: get_time_zone

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
    zoned_time zt("Antarctica/Casey", sys_days{2021y/September/15d}+16h+45min);
    auto pTZ = zt.get_time_zone();
    std::cout << pTZ->name();

    return 0;
}
Antarctica/Casey

operator=

Asigne otro zoned_time a this uno. O bien, asigne solo los otros zoned_timesys_time o local_time.

1) zoned_time& operator=(const zoned_time& zt) = default;
2) zoned_time& operator=(const sys_time<Duration>& st);
3) zoned_time& operator=(const local_time<Duration>& lt);

Parámetros

zt
que zoned_time se va a asignar a this uno.

st
sys_time que se va a asignar al objeto almacenado time_point en este zoned_timeobjeto .

lt
local_time que se va a asignar al objeto almacenado time_point en este zoned_timeobjeto .

Valor devuelto

*this

Ejemplo: operator=

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
    zoned_time zt1{}, zt2("Pacific/Galapagos", sys_days{2021y/September/15d} + 16h + 45min);
    std::cout << zt2.get_local_time() << "\n";
    zt1 = zt2.get_local_time();
    std::cout << zt1.get_local_time();

    return 0;
}
2021-09-15 10:45:00
2021-09-15 10:45:00

Observaciones

1) Operador de asignación de copia predeterminado. Copia (no mueve) el puntero almacenado time_point y time_zone del otro zoned_time en este zoned_time. 2) Asigna st a en time_point este zoned_timeobjeto . Después de la asignación, *this->get_sys_time() == st; 3) Convierte lt (a local_time) en .sys_time Esto lo hace básicamente como timeZone->to_sys(lt)y asigna el resultado a en time_point este zoned_timeobjeto . Después de la asignación, *this->get_local_time() == lt;

operator local_time

Combina la zoned_timezona horaria de con el punto de tiempo almacenado para generar la hora local en esa zona horaria.

explicit operator local_time<duration>() const;

Valor devuelto

que time_point<local_t, Duration> representa la hora local para la hora y la zona horaria de este zoned_timeobjeto . Puede usar el alias local_time de conveniencia para representar un valor devuelto por esta función.

El valor devuelto es eficaz timeZone->to_local(get_sys_time());

Ejemplo: operator local_time

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
    zoned_time zt("Pacific/Galapagos", sys_days{ 2021y / September / 15d } + 16h + 45min);
    std::cout << (local_time<seconds>)zt;

    return 0;
}
2021-09-15 10:45:00

operator sys_time

Obtiene el punto de tiempo almacenado en esta zoned_time sin aplicar la zona horaria.

operator sys_time<duration>() const;

Valor devuelto

La hora almacenada en este zoned_time, sin ningún ajuste para la zona horaria. El devuelto sys_time es un sinónimo de template <class Duration> time_point<system_clock Duration>; y representa el mismo momento en el tiempo que se almacena en este zoned_time.

Ejemplo: operator sys_time

// compile using: /std:c++latest
#include <iostream>
#include <chrono>

using namespace std::chrono;

int main()
{
    zoned_time zt("Pacific/Galapagos", sys_days{2021y/September/15d} + 16h + 45min);
    std::cout << (sys_time<seconds>)zt;

    return 0;
}
2021-09-15 16:45:00

Consulte también

<chrono>
time_point
time_zone
zoned_traits Estructura
Referencia de archivos de encabezado