Klasa time_zone
A time_zone
reprezentuje strefę czasową dla określonego obszaru geograficznego. Zawiera pełną historię reguł strefy czasowej dla każdego obszaru, więc konwersje czasu będą dokładne, jeśli konwertujesz godzinę daty z powrotem, gdy reguły są inne dla strefy czasowej niż obecnie.
Składnia
class time_zone; // Since C++20
Uwagi
Biblioteka <chrono>
tworzy time_zone
obiekty w ramach inicjowania bazy danych strefy czasowej. Zapewnia const
dostęp do utworzonych obiektów.
Nie można skonstruować ani skopiować time_zone
obiektu, a użycie domyślnego konstruktora przenoszenia lub domyślnego operatora przypisania przenoszenia powoduje niezdefiniowane zachowanie.
W ten sposób uzyskujesz time_zone
wystąpienie:
const auto& timeZoneDatabase = get_tzdb(); // initialize the time zone database
const auto& currentZone = timeZoneDatabase.current_zone();
Język Microsoft C++ obsługuje klasę rozpoczynającą time_zone
się w programie Visual Studio 2019 w wersji 16.10. Klasa time_zone
jest funkcją języka C++20. Wymagana jest opcja kompilatora /std:c++latest
.
Elementy członkowskie
Publiczne funkcje składowe i szablony funkcji
Nazwa/nazwisko | opis |
---|---|
get_info |
Pobiera element sys_info lub local_info dla tego time_zone elementu . |
name |
Pobiera nazwę tego elementu time_zone . |
to_local |
Konwertuje element sys_time na element local_time w tym time_zone obiekcie . |
to_sys |
Konwertuje element local_time na element sys_time w tym time_zone obiekcie . |
Wymagania
Nagłówek: <chrono>
Dane strefy czasowej są dostępne tylko dla systemu Windows 10 w wersji 1903/19H1 i nowszych oraz systemu Windows Server 2022 i nowszych.
Przestrzeń nazw: std::chrono
get_info
Szablon get_info
funkcji ma dwa przeciążenia, które pobierają element sys_info
lub local_info
dla tego elementu time_zone
.
template<class Duration>
sys_info get_info(const sys_time<Duration>& st) const; // Since C++20
template<class Duration>
local_info get_info(const local_time<Duration>& lt) const; // Since C++20
Parametry
Duration
Klasa duration
dla parametru sys_time
or local_time
.
st
Punkt sys_time
czasu używany do uzyskania sys_info
wyniku.
lt
Punkt local_time
czasu używany do uzyskania local_info
wyniku.
Wartość zwracana
W szablonie get_info
funkcji, który zajmuje sys_time
punkt st
czasu, zwraca sys_info
obiekt i
taki, który st
znajduje się w zakresie [i.begin, i.end)
.
W szablonie get_info
funkcji, który zajmuje local_time
punkt lt
czasu, zwraca local_info
obiekt.
Uwagi
Program Microsoft C++ obsługuje time_zone::get_info
uruchamianie w programie Visual Studio 2019 w wersji 16.10. Funkcja jest funkcją języka C++20, która wymaga opcji kompilatora /std:c++latest
.
name
Pobiera nazwę tego elementu time_zone
.
string_view name() const noexcept; // Since C++20
Wartość zwracana
Zwraca nazwę strefy czasowej jako string_view
.
Uwagi
Program Microsoft C++ obsługuje time_zone::name
uruchamianie w programie Visual Studio 2019 w wersji 16.10.
to_local
Szablon funkcji konwertuje sys_time
element to_local
na element local_time
w tym time_zone
obiekcie .
template<class Duration>
local_time<common_type_t<Duration, seconds>>
to_local(const sys_time<Duration>& st) const; // Since C++20
Parametry
Duration
Klasa duration
dla parametru sys_time
or local_time
.
st
Punkt sys_time
czasu używany do uzyskania sys_info
wyniku.
Wartość zwracana
to_local
Zwraca wartość local_time
skojarzona z elementem st
w tym time_zone
obiekcie .
Uwagi
Program Microsoft C++ obsługuje time_zone::to_local
uruchamianie w programie Visual Studio 2019 w wersji 16.10. Funkcja jest funkcją języka C++20, która wymaga opcji kompilatora /std:c++latest
.
Przykład: konwertowanie sys_time
na local_time
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
const auto& timeZoneDatabase = get_tzdb();
const auto& currentZone = timeZoneDatabase.current_zone();
local_time<system_clock::duration> lt = currentZone->to_local(system_clock::now());
std::cout << "local_time: " << lt << "\n";
return 0;
}
local_time: 2021-09-08 15:15:53.1830646
to_sys
Szablon to_sys
funkcji ma dwa przeciążenia, które konwertują local_time
element na element sys_time
w tym obiekcie time_zone
.
template<class Duration>
sys_time<common_type_t<Duration, seconds>>
to_sys(const local_time<Duration>& lt) const; // Since C++20
template<class Duration>
sys_time<common_type_t<Duration, seconds>>
to_sys(const local_time<Duration>& lt, choose z) const; // Since C++20
Parametry
Duration
Klasa duration
parametru local_time
.
lt
local_time
Punkt czasu do przekonwertowania.
z
Wartość choose::earliest
lub choose::latest
. Służy do rozwiązywania innych niejednoznacznych wyników.
Wartość zwracana
to_sys
zwraca wartość sys_time
, która jest co najmniej tak dobra, jak seconds
. Jest to bardziej precyzyjne, jeśli argument lt
ma dokładnszą precyzję. Zwrócony sys_time
element jest odpowiednikiem lt
czasu UTC zgodnie z regułami tego time_zone.
Przeciążenie jednoparametrowe zgłasza ambiguous_local_time
wyjątek, jeśli konwersja z lt
do elementu sys_time
jest niejednoznaczna, a nonexistent_local_time
wyjątek, jeśli lokalny punkt czasu reprezentuje nieistniejący lokalny punkt czasu. Niejednoznaczność może wystąpić w czasie letnim do standardowego przejścia w czasie standardowym. W ciągu jednego dnia mogą wystąpić dwa wystąpienia tego samego lokalnego punktu czasu. Nieistniejący lokalny punkt czasu reprezentuje punkt czasu przejścia z czasu standardowego do czasu letniego.
Przeciążenie dwóch parametrów nie zgłasza wyjątku w tych przypadkach. Jeśli konwersja z na wartość sys_time
jest niejednoznaczna, to_sys
zwraca wartość wcześniejsząsys_time
, jeśli z
ma choose::earliest
wartość , i zwraca wartość późniejsząsys_time
, jeśli z
ma wartość choose::latest
.lt
Jeśli reprezentuje lt
nieistniejący czas między dwoma punktami czasu UTC, dwa punkty czasu UTC są takie same, więc to_sys
zwraca ten punkt czasu UTC.
Uwagi
Program Microsoft C++ obsługuje time_zone::to_sys
uruchamianie w programie Visual Studio 2019 w wersji 16.10. Funkcja jest funkcją języka C++20, która wymaga opcji kompilatora /std:c++latest
.
Przykład: konwertowanie local_time
na sys_time
// compile using: /std:c++latest
#include <iostream>
#include <chrono>
using namespace std::chrono;
int main()
{
const auto& timeZoneDatabase = get_tzdb();
const auto& currentZone = timeZoneDatabase.current_zone();
auto st = currentZone->to_sys(local_days{2021y/September/15d}+16h+45min, choose::earliest);
std::cout << "sys_time: " << st << "\n";
return 0;
}
sys_time: 2021-09-15 23:45:00.0000000
Zobacz też
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla