Clase zoned_time
Un zoned_time
es un emparejamiento de time_zone
y time_point
. Proporciona un significado time_point
dentro de una zona horaria específica.
Sintaxis
template<class Duration, class TimeZonePtr = const time_zone*>
class zoned_time ; // C++20
Comentarios
zoned_time
siempre 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 elemento zoned_time . |
get_info |
Usa la zona horaria de 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 la time_zone almacenada en este zoned_time . |
operator= |
Asigne el valor de otro zoned_time , u otro zoned_time 's local_time o sys_time , a este zoned_time . |
operator local_time |
Combina la zona horaria de zoned_time 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 elemento zoned_time en la secuencia especificada. |
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 clase zoned_time
a partir de Visual Studio 2019, versión 16.10.
Los datos de zona horaria solo están disponibles para la versión 1903/19H1 y posteriores de Windows 10, además de Windows Server 2022 y versiones posteriores.
Espacio de nombres: std::chrono
Opción del compilador: /std:c++latest
Constructores
Construya un elemento zoned_time
.
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 horas locales ambiguas o inexistentes al convertir un local_time
en sys_time
. Para más información, vea choose
enum.
name
Nombre de una zona horaria.
st
sys_time
con una duración especificada. Se usa para establecer la hora.
tp
local_time
con una duración especificada. Se usa para establecer la hora.
y
Objeto zoned_time
copiado para construir un nuevo zoned_time
.
z
time_zone
que es std::move(z)
en el zoned_time
construido.
zt
Un puntero zoned_time
que es std::move(zt)
en el zoned_time
construido.
Comentarios
1) Inicializa la zona horaria con traits::default_zone()
y el valor predeterminado construye el punto de tiempo.
2) 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)
. Vea Enumeración de choose
para ver cómo el parámetro c
afecta 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 parámetro choose
, c
, no produce resultado alguno.
14) Inicializa la zona horaria desde la zona horaria de y
y el punto de tiempo.
15) Inicializa la zona horaria con std::move(z)
y la hora desde el punto de tiempo de y
.
16) Equivalente a la construcción con {z, y}
. El parámetro choose
, c
, no produce resultado alguno.
Nota:
zoned_time
no tiene un constructor de movimiento. Al intentar moverla, 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 instancia zoned_time
para la zona horaria "Antarctica/Casey"
, el 15/9/2021 a las 16:45:
// 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 zoned_time
para obtener información sobre el punto de tiempo de zoned_time
.
sys_info get_info() const;
Valor devuelto
Un sys_info
que contiene la diferencia horaria con UTC para la zona horaria y la hora, el desplazamiento de 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 objeto local_time<duration>
que representa la hora local dada la zona horaria de zoned_time
y el punto de tiempo.
local_time<duration> get_local_time() const;
Valor devuelto
El valor 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 zoned_time
para 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 la hora del reloj del sistema como time_point. El valor 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
Un puntero a la time_zone almacenada 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 un this
. O bien, asígnelo solo a los demás zoned_time
sys_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
El zoned_time
que se va a asignar a this
.
st
El sys_time
que se va a asignar al time_point
almacenado en este zoned_time
.
lt
El local_time
que se va a asignar al time_point
almacenado en este zoned_time
.
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
Comentarios
1) Operador de asignación de copia predeterminado. Copia (no mueve) el puntero time_point
y time_zone almacenados del otro zoned_time
a este zoned_time
.
2) Asigna st
a time_point
en este zoned_time
. 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 [time_point
] en este zoned_time
. Después de la asignación, *this->get_local_time() == lt;
operator local_time
Combina la zona horaria de zoned_time
con el punto de tiempo almacenado para generar la hora local en esa zona horaria.
explicit operator local_time<duration>() const;
Valor devuelto
time_point<local_t, Duration>
representa la hora local de la zona horaria de este zoned_time
. Puede usar el alias de conveniencia local_time
para representar un valor devuelto por esta función.
El valor devuelto es 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 valor devuelto sys_time
es un sinónimo de template <class Duration> time_point<system_clock Duration>;
y representa el mismo punto en el tiempo que está almacenado 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
Estructura zoned_traits
Referencia de archivos de encabezado