<chrono>
Uwzględnij nagłówek <chrono>
standardowy, aby zdefiniować klasy i funkcje reprezentujące czas trwania i wystąpienia czasu oraz manipulowanie nimi.
Począwszy od programu Visual Studio 2015, implementacja steady_clock
programu została zmieniona tak, aby spełniała wymagania standardowe języka C++ dotyczące steadiness i monotonicity:
steady_clock
jest teraz oparta naQueryPerformanceCounter()
high_resolution_clock
jest teraz definicją typedef dlasteady_clock
W implementacjisteady_clock::time_point
języka Microsoft C++ jest teraz elementemtypedef
.chrono::time_point<steady_clock>
Jednak niekoniecznie jest to przypadek innych implementacji.
Wymagania
Nagłówek: <chrono>
Ustawodawcy regionalni od czasu do czasu wprowadzają zmiany w strefach czasowych, a międzynarodowy organ standardów określa, kiedy należy uwzględnić nowe sekundy przestępne. Baza danych tych zmian została dodana do systemu Windows 10. Szczególnie:
Funkcja | Wersja klienta | Wersja serwera |
---|---|---|
Przestąp drugie aktualizacje bazy danych | Windows 10 w wersji 1809 lub nowszej | Windows Server 2019 lub nowszy |
Obsługa stref czasowych | Windows 10 w wersji 1903/19H1 lub nowszej | Windows Server 2022 lub nowszy |
Korzystanie z obiektów strefy czasowej w starszych wersjach systemu Windows powoduje błąd środowiska uruchomieniowego.
Przestrzeń nazw: std
Typy calendryczne
Nazwa/nazwisko | opis |
---|---|
common_type Struct |
Opisuje specjalizacje szablonu common_type klasy dla wystąpień duration elementów i time_point . |
Klasa day |
Dzień miesiąca. Na przykład 25 dzień miesiąca. |
Klasa duration |
Interwał czasu. |
duration_values Struct |
Zawiera określone wartości parametru Rep szablonu duration . |
Klasa hh_mm_ss |
Dzieli czas na duration godziny:minuty:sekundy. |
last_spec |
Służy do wskazywania ostatniego elementu w miesiącu, takiego jak ostatni dzień tygodnia miesiąca (ostatni wtorek lutego 2020 r.) lub ostatni dzień miesiąca (ostatni dzień kwietnia 2019 r.). |
Klasa leap_second |
Data i wartość wstawionego przestępnego sekundy. |
leap_second_info Struct |
Dane zwrócone przez element get_leap_second_info . |
Klasa month |
Miesiąc roku. Na przykład lipiec. |
Klasa month_day |
Określony dzień określonego miesiąca. Na przykład 30 lipca. |
Klasa month_day_last |
Ostatni dzień miesiąca. |
Klasa month_weekday |
Nth dni powszednie określonego miesiąca. |
Klasa month_weekday_last |
Nth dni powszednie określonego miesiąca. |
Klasa time_point |
Punkt w czasie. |
Klasa weekday |
Dzień tygodnia. |
Klasa weekday_last |
Ostatni dzień tygodnia miesiąca. |
Klasa weekday_indexed |
Łączy dzień tygodnia z indeksem, który reprezentuje dzień tygodnia miesiąca. |
Klasa year |
Rok w kalendarzu gregoriańskim. |
Klasa year_month |
Rok i miesiąc. Nie określono dnia. |
Klasa year_month_day |
Rok, miesiąc i dzień. |
Klasa year_month_day_last |
Ostatni dzień określonego miesiąca i roku. |
Klasa year_month_weekday |
Określony rok, miesiąc i nth dzień tygodnia miesiąca. |
Klasa year_month_weekday_last |
Określony rok, miesiąc i ostatni dzień tygodnia miesiąca. |
Zegary
Nazwa/nazwisko | opis |
---|---|
Klasa file_clock |
Alias zegara używanego dla std::filesystem::file_time_type elementu , który służy do wyrażania sygnatur czasowych plików. |
Klasa gps_clock |
Zegar, który utrzymuje czas GPS. Czas miar rozpoczynający się od pierwszej niedzieli stycznia 1980 o 00:00:00 UTC. |
high_resolution_clock Struct |
Zegar z nanosekundowym okresem kleszcza. |
local_t Struct |
Pseudo-zegar używany jako argument do szablonu time_point , aby wskazać, że time_point reprezentuje czas lokalny. |
steady_clock Struct |
Zegar steady . Ten zegar jest preferowany do pomiaru interwałów czasu. |
system_clock Struct |
Zegar oparty na zegarze w czasie rzeczywistym systemu. |
Klasa tai_clock |
Measures International Atomic Time (TAI) począwszy od czwartku, 1 stycznia 1958 o 00:00:00. Ten zegar nie uwzględnia sekund przestępnych. |
Klasa utc_clock |
Mierzy czas od 00:00:00 UTC w czwartek, 1 stycznia 1970 r. Ten zegar odpowiada za sekundy przestępne i jest standardem czasu używanym na całym świecie. |
Strefy czasowe
Nazwa/nazwisko | opis |
---|---|
choose |
Wyliczenie określające sposób rozpoznawania niejednoznacznej local_time konwersji elementu na .sys_time |
local_info |
Udostępnia interfejs niskiego poziomu do informacji o strefie czasowej o wyniku konwersji obiektu local_time na sys_time . |
sys_info |
Udostępnia interfejs niskiego poziomu do informacji o strefie czasowej o wyniku konwersji obiektu sys_time na local_time . |
Klasa time_zone |
Wszystkie przejścia strefy czasowej dla określonego obszaru geograficznego. |
Klasa time_zone_link |
Alternatywna nazwa elementu time_zone . |
tzdb Struct |
Reprezentuje kopię bazy danych strefy czasowej. |
Klasa tzdb_list |
Pojedyncza lista baz danych stref czasowych. |
Klasa zoned_time |
Parowanie elementu time_zone i z time_point określoną precyzją. |
zoned_traits Struct |
Służy do kojarzenia innej domyślnej strefy czasowej z elementem zoned_time i opcjonalnie mapowania niestandardowej nazwy na tę domyślną strefę czasową. |
Wyjątki
Nazwa/nazwisko | opis |
---|---|
ambiguous_local_time |
Błąd zgłaszany, gdy element local_time jest konwertowany na element sys_time , a wynik jest niejednoznaczny. |
nonexistent_local_time |
Błąd zgłaszany, gdy element local_time jest konwertowany na element sys_time , a wynikiem jest czas, który nie istnieje. |
Funkcje
Nazwa/nazwisko | opis |
---|---|
ceil(duration) |
ceil duration Zwraca obiekt jako określony typ. |
ceil(time_point) |
ceil time_point Zwraca obiekt jako określony typ. |
clock_cast |
Konwertuje zegar time_point z jednego zegara na odpowiednik time_point innego zegara. |
duration_cast |
Rzutuje duration obiekt na określony typ. |
floor(duration) |
floor duration Zwraca obiekt jako określony typ. |
floor(time_point) |
floor time_point Zwraca obiekt jako określony typ. |
from_stream() |
Przeanalizuj strumień wejściowy w jeden z std::chrono typów czasu lub interwałów, takich jak day , month , weekday , year i tak dalej, przy użyciu określonego formatu. |
get_leap_second_info |
leap_second_info Pobiera strukturę. |
is_am |
hours Czy obiekt to AM. |
is_pm |
hours Czy obiekt ma wartość PM. |
locate_zone |
Pobiera określoną strefę czasową. |
make12 |
Zwraca formularz hours w ciągu 12 godzin. |
make24 |
Zwraca formularz hours w ciągu 24 godzin. |
round(duration) |
duration Zwraca obiekt zaokrąglony jako określony typ. |
round(time_point) |
time_point Zwraca obiekt zaokrąglony jako określony typ. |
time_point_cast |
Rzutuje time_point obiekt na określony typ. |
Powiązane ze strefą czasową
Nazwa/nazwisko | opis |
---|---|
current_zone |
Pobiera bieżącą strefę czasową. |
get_tzdb |
Pobiera pierwszy wpis bazy danych strefy czasowej. |
get_tzdb_list |
Pobiera listę wpisów bazy danych strefy czasowej. |
reload_tzdb |
Pobiera zaktualizowany wpis bazy danych strefy czasowej. |
remote_version |
Sprawdza zaktualizowany wpis bazy danych strefy czasowej. |
Operatory
Nazwa/nazwisko | opis |
---|---|
operator- |
Odejmowanie lub negowanie różnych <chrono> obiektów. |
operator!= |
Operator nierówności używany z różnymi <chrono> obiektami. |
operator modulo |
Operator dla operacji modulo na duration obiektach. |
operator* |
Operator mnożenia obiektów duration . |
operator/ |
Operator dzielenia obiektów duration . |
operator/ |
Zawiera składnię umożliwiającą tworzenie dat kalendarza. |
operator+ |
Dodaj do różnych <chrono> obiektów. |
operator< |
Określa, czy różne <chrono> obiekty są mniejsze niż inne. |
operator<= |
Określa, czy różne <chrono> obiekty są mniejsze, czy równe innemu. |
operator== |
Określa, czy różne <chrono> obiekty są ze sobą równe. |
operator> |
Określa, czy różne <chrono> obiekty są większe niż inne. |
operator>= |
Określa, czy różne <chrono> obiekty są większe lub równe innemu. |
Typedefs
Aby uzyskać więcej informacji na temat typów współczynników używanych w następujących definicjach typów, zobacz <ratio>
.
Typy wygody duration
Nazwa/nazwisko | opis |
---|---|
typedef duration<long long, nano> nanoseconds; |
Synonim typu duration , który ma okres znaczników o wartości miliardowej (1/1 000 000 000 000) sekundy. |
typedef duration<long long, micro> microseconds; |
Synonim typu duration , który ma okres znaczników o wartości jednej milionowej (1/1000 000) sekundy. |
typedef duration<long long, milli> milliseconds; |
Synonim typu duration , który ma okres tykania jednego tysięcy (1/1000) sekundy. |
typedef duration<long long> seconds; |
Synonim typu duration , który ma kropkę 1 sekundę. |
typedef duration<int, ratio<60>> minutes; |
Synonim typu duration , który ma kropkę 1 minutę. |
typedef duration<int, ratio<3600>> hours; |
Synonim typu duration , który ma okres znaczników o wartości 1 godziny. |
Typy wygody time_point
Nazwa/nazwisko | opis |
---|---|
file_time |
Synonim dla elementu time_point<file_clock, Duration> . Reprezentuje element time_point dla elementu file_clock . Należy określić wartość Duration , na przykład file_time<seconds> ft; . |
gps_seconds |
Synonim liczby gps_time<seconds>; sekund reprezentowany przez element time_point skojarzony z elementem gps_clock . |
gps_time |
Synonim dla elementu time_point<gps_clock, Duration> . Reprezentuje element time_point dla elementu gps_clock . Należy określić wartość Duration , na przykład gps_time<milliseconds> gps; . |
local_days |
Synonim dla elementu local_time<days> . Liczba dni reprezentowana przez element, który nie jest skojarzony z żadną strefą time_point czasową. |
local_seconds |
Synonim dla elementu local_time<seconds> . |
local_time |
Synonim dla elementu time_point<local_t, Duration> . time_point Reprezentuje czas lokalny, który nie jest jeszcze skojarzony ze strefą czasową. Należy określić wartość Duration , na przykład local_time<seconds> lt; . A local_time to czas lokalny gdzieś. Nie jest to bieżąca godzina lokalna zegara komputera. Tylko wtedy, gdy parujesz element local_time z wartością time_zone , uzyskasz punkt w czasie, który można przekonwertować na czas UTC lub godzinę w określonej strefie czasowej. |
sys_days |
Synonim dla elementu sys_time<days> . Liczba dni od epoki system_clock reprezentowana przez element time_point skojarzony z elementem system_clock . |
sys_seconds |
Synonim dla elementu sys_time<seconds> . Liczba sekund bez przestępnych od epoki system_clock (1 stycznia 1970 00:00:00 UTC), reprezentowana przez element time_point skojarzony z elementem system_clock . |
sys_time |
Synonim dla elementu time_point<system_clock, Duration> . Należy określić wartość Duration , na przykład sys_time<seconds> st; . Reprezentuje zwrócony time_point element z system_clock::now() . Reprezentuje czas systemu Unix, który jest ściśle przybliżony czas UTC. |
tai_seconds |
Synonim dla elementu tai_time<seconds> . Liczba sekund reprezentowana przez element time_point skojarzony z elementem tai_clock . |
tai_time |
Synonim dla elementu time_point<tai_clock, Duration> . Należy podać element Duration , na przykład tai_time<seconds> tt; . Reprezentuje element time_point dla elementu tai_clock . |
utc_seconds |
Synonim dla utc_time<seconds>; |
utc_time |
Synonim dla elementu time_point<utc_clock, Duration> . Należy podać element Duration , na przykład utc_time<seconds> ut; . Reprezentuje element time_point dla elementu utc_clock . |
Cechy typów
Nazwa/nazwisko | opis |
---|---|
clock_time_conversion |
Cecha określająca sposób konwertowania z jednego zegara time_point na inny. |
is_clock | Sprawdź, czy typ jest zegarem. |
treat_as_floating_point | Sprawdź, czy duration element można przekonwertować na inny duration , który ma inny okres znaczników. |
Literały
(C++11) Nagłówek <chrono>
definiuje następujące literały zdefiniowane przez użytkownika, których można użyć w celu zapewnienia większej wygody , bezpieczeństwa typu i możliwości konserwacji kodu. Te literały są definiowane w wbudowanej literals::chrono_literals
przestrzeni nazw i znajdują się w zakresie, gdy std::chrono
znajduje się w zakresie.
Deklaracja | opis |
---|---|
hours operator "" h(unsigned long long Val) |
Określa godziny jako wartość całkowitą. |
duration<double, ratio<3600>> operator "" h(long double Val) |
Określa godziny jako wartość zmiennoprzecinkową. |
minutes (operator "" min)(unsigned long long Val) |
Określa minuty jako wartość całkowitą. |
duration<double, ratio<60>> (operator "" min)( long double Val) |
Określa minuty jako wartość zmiennoprzecinkową. |
seconds operator "" s(unsigned long long Val) |
Określa minuty jako wartość całkowitą. |
duration<double> operator "" s(long double Val) |
Określa sekundy jako wartość zmiennoprzecinkową. |
milliseconds operator "" ms(unsigned long long Val) |
Określa milisekundy jako wartość całkowitą. |
duration<double, milli> operator "" ms(long double Val) |
Określa milisekundy jako wartość zmiennoprzecinkową. |
microseconds operator "" us(unsigned long long Val) |
Określa mikrosekundy jako wartość całkowitą. |
duration<double, micro> operator "" us(long double Val) |
Określa mikrosekundy jako wartość zmiennoprzecinkową. |
nanoseconds operator "" ns(unsigned long long Val) |
Określa nanosekundy jako wartość całkowitą. |
duration<double, nano> operator "" ns(long double Val) |
Określa nanosekundy jako wartość zmiennoprzecinkową. |
W poniższych przykładach pokazano, jak używać <chrono>
literałów:
constexpr auto day = 24h;
constexpr auto week = 24h* 7;
constexpr auto my_duration_unit = 108ms;