Classe zoned_time
Um zoned_time
é um par de um time_zone
e um time_point
. Dá um significado time_point
dentro de um fuso horário específico.
Sintaxe
template<class Duration, class TimeZonePtr = const time_zone*>
class zoned_time ; // C++20
Comentários
Um zoned_time
sempre se refere a um fuso horário válido e representa um ponto no tempo que existe e não é ambíguo nesse fuso horário.
Membros
Nome | Descrição |
---|---|
Construtores | Construa um zoned_time . |
get_info |
Usa o fuso horário neste zoned_time para obter informações sobre o ponto de tempo no zoned_time . |
get_local_time |
Combina o fuso horário em zoned_time com o ponto de tempo armazenado para produzir a hora local nesse fuso horário. |
get_sys_time |
Obtém o ponto de tempo armazenado neste zoned_time sem aplicar o fuso horário. |
get_time_zone |
Obtém o time_zone armazenado neste zoned_time . |
operator= |
Atribua o valor de outro zoned_time , ou outro zoned_time de local_time ou sys_time , a este zoned_time . |
operator local_time |
Combina o fuso horário de zoned_time com o ponto de tempo armazenado para produzir a hora local nesse fuso horário. |
operator sys_time |
Obtém a hora armazenada neste zoned_time sem aplicar o fuso horário. |
Não membros
Nome | Descrição |
---|---|
operator== |
Determinar se duas instâncias zoned_time são iguais. |
operator<< |
Gerar um zoned_time para o fluxo fornecido. |
Aliases de tipo de conveniência
Nome | Descrição |
---|---|
zoned_seconds |
Um sinônimo de zoned_time<seconds>; |
zoned_time::duration |
Uma duração medida em segundos. É um sinônimo para common_type_t<Duration, seconds>; |
Requisitos
Cabeçalho: <chrono>
O Microsoft C++ dá suporte à classe zoned_time
no Visual Studio 2019 versão 16.10 e posteriores.
Os dados de fuso horário só estão disponíveis para Windows 10 versão 1903/19H1 e posterior e no Windows Server 2022 e posterior.
Namespace: std::chrono
Opção do compilador: /std:c++latest
Construtores
Construa um 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 como lidar com horários locais ambíguos ou inexistentes ao converter um local_time
em um sys_time
. Para obter mais informações, consulte choose
enum.
name
O nome de um fuso horário.
st
Um sys_time
com uma duração especificada. Usado para definir a hora.
tp
Um local_time
com uma duração especificada. Usado para definir a hora.
y
Um zoned_time
copiado para construir um novo zoned_time
.
z
Um time_zone
que é std::move(z)
'd no zoned_time
construído.
zt
Um ponteiro zoned_time
que é std::move(zt)
'd no zoned_time
construído.
Comentários
1) Inicializa o fuso horário com traits::default_zone()
e o padrão constrói o ponto de tempo.
2) O construtor de cópia padrão.
3) Inicializa o fuso horário com std::move(z)
e o padrão constrói o ponto de tempo.
4) Inicializa o fuso horário com traits::default_zone()
e a hora com st
.
5) Inicializa o fuso horário com traits::locate_zone(name)
e o padrão constrói o ponto de tempo.
6) Inicializa o fuso horário com std::move(z)
e a hora convertendo tp
como se fosse z->to_sys(tp)
.
7) Inicializa o fuso horário com std::move(z)
e a hora como se fosse z->to_sys(tp, c)
. Consulte choose
enum para saber como o parâmetro c
afeta o resultado.
8) Inicializa o fuso horário com std::move(z)
e a hora com st
.
9) Equivalente a construção com {traits::locate_zone(name), tp}
.
10) Equivalente a construção com {traits::locate_zone(name), tp, c}
.
11) Equivalente a construção com {traits::locate_zone(name), st}
.
12) Equivalente a construção com {traits::locate_zone(name), y}
.
13) Equivalente a construção com {traits::locate_zone(name), y, c}
. O parâmetro choose
, c
, não tem efeito.
14) Inicializa o fuso horário do fuso horário e ponto de tempo de y
.
15) Inicializa o fuso horário com std::move(z)
e a hora do ponto de tempo de y
.
16) Equivalente a construção com {z, y}
. O parâmetro choose
, c
, não tem efeito.
Observação
zoned_time
não tem um construtor de movimentação. Tentar movê-lo resulta em uma cópia usando o construtor de cópia padrão.
Exemplo: construir um zoned_time
Veja a seguir como criar uma instância zoned_time
para o fuso horário "Antarctica/Casey"
, em 15/09/2021 às 16h45:
// 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 o fuso horário neste zoned_time
para obter informações sobre o ponto de tempo no zoned_time
.
sys_info get_info() const;
Valor retornado
Um sys_info
que contém o deslocamento UTC para o fuso horário e a hora, o deslocamento do ajuste do horário de verão e assim por diante.
Exemplo: 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
Obtém um local_time<duration>
que representa a hora local de acordo com o fuso horário e o ponto de tempo deste zoned_time
.
local_time<duration> get_local_time() const;
Valor retornado
O local_time
retornado é sinônimo de time_point<local_t, duration>
.
Exemplo: 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
Obtém o tempo armazenado em zoned_time
para o system_clock
.
sys_time<duration> get_sys_time() const;
Valor retornado
A hora armazenada neste zoned_time
, sem nenhum ajuste de fuso horário. Representa a hora do relógio de parede de todo o sistema como um time_point. O sys_time
retornado é sinônimo de template <class Duration> time_point<system_clock Duration>;
Exemplo: 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
Obtém o fuso horário armazenado neste zoned_time
.
TimeZonePtr get_time_zone() const;
Valor retornado
Um ponteiro para o time_zone armazenado neste zoned_time
.
Exemplo: 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=
Atribua outro zoned_time
a this
um. Ou atribua apenas o sys_time
ou local_time
do outro zoned_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
O zoned_time
para atribuir a um this
.
st
O sys_time
a ser atribuído ao time_point
armazenado neste zoned_time
.
lt
O local_time
a ser atribuído ao time_point
armazenado neste zoned_time
.
Valor retornado
*this
Exemplo: 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
Comentários
1) O operador de atribuição de cópia padrão. Copia (não move) o ponteiro armazenado time_point
e time_zone do outro zoned_time
para este zoned_time
.
2) Atribui st
ao time_point
neste zoned_time
. Após a atribuição, *this->get_sys_time() == st;
3) Converte lt
(um local_time
) em um sys_time
. Ele faz isso essencialmente como timeZone->to_sys(lt)
e atribui o resultado ao [time_point
] neste zoned_time
. Após a atribuição, *this->get_local_time() == lt;
operator local_time
Combina o fuso horário de zoned_time
com o ponto de tempo armazenado para produzir a hora local nesse fuso horário.
explicit operator local_time<duration>() const;
Valor retornado
Um time_point<local_t, Duration>
que representa a hora local para a hora e o fuso horário neste zoned_time
. Você pode usar o alias de conveniência local_time
para representar um valor retornado por esta função.
O valor de retorno é efetivamente timeZone->to_local(get_sys_time());
Exemplo: 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
Obtém o ponto de tempo armazenado neste zoned_time
sem aplicar o fuso horário.
operator sys_time<duration>() const;
Valor retornado
A hora armazenada neste zoned_time
, sem nenhum ajuste de fuso horário. O sys_time
retornado é sinônimo de template <class Duration> time_point<system_clock Duration>;
e representa o mesmo momento que está armazenado neste zoned_time
.
Exemplo: 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
Confira também
<chrono>
time_point
time_zone
Struct zoned_traits
Referência de arquivos de cabeçalho