Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Klasa
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_zoneelementu . |
name |
Pobiera nazwę tego elementu time_zone. |
to_local |
Konwertuje element sys_time na element local_time w tym time_zoneobiekcie . |
to_sys |
Konwertuje element local_time na element sys_time w tym time_zoneobiekcie . |
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 stczasu, 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 ltczasu, 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_zoneobiekcie .
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_zoneobiekcie .
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::earliestwartość , 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