Partilhar via


zoned_time classe

A zoned_time é um emparelhamento de a time_zone e a time_point. Dá um time_point significado dentro de um fuso horário específico.

Sintaxe

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

Observações

A 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_timearquivo .
get_info Usa o fuso horário para zoned_time obter informações sobre o ponto de tempo no zoned_time.
get_local_time Combina o fuso horário no 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 nisso 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 de outro zoned_timeou local_timesys_time , a este zoned_time.
operator local_time Combina o fuso zoned_timehorário do 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== Determine se duas instâncias zoned_time são iguais.
operator<< Saída a zoned_time para o fluxo dado.

Aliases de tipo de conveniência

Nome Descrição
zoned_seconds Sinónimo de zoned_time<seconds>;
zoned_time::duration Uma duração medida em segundos. É sinónimo de common_type_t<Duration, seconds>;

Requerimentos

Cabeçalho:<chrono>

O Microsoft C++ oferece suporte à classe a zoned_time partir do Visual Studio 2019 versão 16.10.

Os dados de fuso horário só estão disponíveis para o Windows 10 versão 1903/19H1 e posterior, e Windows Server 2022 e posterior.

Espaço de nomes:std::chrono

Opção do compilador:/std:c++latest

Construtores

Construa um zoned_timearquivo .

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 .sys_time Para obter mais informações, consulte choose enum.

name
O nome de um fuso horário.

st
A sys_time com uma duração especificada. Usado para definir o tempo.

tp
A local_time com uma duração especificada. Usado para definir o tempo.

y
A zoned_time copiado para construir um novo zoned_timearquivo .

z
A time_zone que é std::move(z)'d no construído zoned_time.

zt
Um zoned_time ponteiro que é std::move(zt)'d para o construído zoned_time.

Observações

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 constrói o ponto de tempo por padrão.
6) Inicializa o fuso horário com std::move(z), e a hora convertendo tp como se fosse por z->to_sys(tp).
7) Inicializa o fuso horário com std::move(z), e a hora como se fosse por 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 à 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 choose parâmetro, c, não tem efeito.
14) Inicializa o fuso horário a partir do fuso horário e do ponto de ytempo.
15) Inicializa o fuso horário com std::move(z) e a hora a partir do ponto de ytempo do .
16) Equivalente a construção com {z, y}. O choose parâmetro, c, não tem efeito.

Observação

zoned_time não tem um construtor move. Tentar movê-lo resulta em uma cópia usando o construtor de cópia padrão.

Exemplo: construir um zoned_time

A seguir mostra como criar uma zoned_time instância para o fuso "Antarctica/Casey"horário, 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 para zoned_time obter informações sobre o ponto de tempo no zoned_time.

sys_info get_info() const;

Valor de retorno

A sys_info que contém o deslocamento UTC para o fuso horário e a hora, o desvio de ajuste de 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, dado o fuso horário e o ponto de tempo deste zoned_timeseio.

local_time<duration> get_local_time() const;

Valor de retorno

O devolvido local_time é 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 no zoned_time para o system_clock.

sys_time<duration> get_sys_time() const;

Valor de retorno

A hora armazenada neste zoned_time, sem qualquer ajuste para fuso horário. Ele representa o tempo do relógio de parede em todo o sistema como um time_point. O devolvido sys_time é 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 de retorno

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 atribuir apenas o outro zoned_time's sys_time ou 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
O zoned_time para atribuir a this um.

st
O sys_time para atribuir ao armazenado time_point neste zoned_time.

lt
O local_time para atribuir ao armazenado time_point neste zoned_time.

Valor de retorno

*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

Observações

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 (a local_time) em um sys_timearquivo . Fá-lo essencialmente como timeZone->to_sys(lt), e atribui o resultado ao time_point in this zoned_time. Após a atribuição, *this->get_local_time() == lt;

operator local_time

Combina o fuso zoned_timehorário do com o ponto de tempo armazenado para produzir a hora local nesse fuso horário.

explicit operator local_time<duration>() const;

Valor de retorno

A time_point<local_t, Duration> que representa a hora local para a hora e fuso horário neste zoned_time. Você pode usar o alias local_time de conveniência para representar um valor retornado por essa 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 nisso zoned_time sem aplicar o fuso horário.

operator sys_time<duration>() const;

Valor de retorno

A hora armazenada neste zoned_time, sem qualquer ajuste para fuso horário. O retornado sys_time é um sinônimo e template <class Duration> time_point<system_clock Duration>; representa o mesmo ponto no tempo que é 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

Ver também

<chrono>
time_point
time_zone
zoned_traits estruturar
Referência de arquivos de cabeçalho