Класс zoned_time
A zoned_time
— это связывание time_zone
с а time_point
. Он дает time_point
значение в пределах определенного часового пояса.
Синтаксис
template<class Duration, class TimeZonePtr = const time_zone*>
class zoned_time ; // C++20
Замечания
Всегда zoned_time
ссылается на допустимый часовой пояс и представляет точку во времени, которая существует и не является неоднозначной в этом часовом поясе.
Участники
Имя | Описание |
---|---|
Конструкторы | Создайте zoned_time |
get_info |
Использует часовой пояс в этом zoned_time для получения сведений об точке времени в этой точке zoned_time . |
get_local_time |
Объединяет часовой пояс в zoned_time хранящейся точке времени для создания локального времени в этом часовом поясе. |
get_sys_time |
Возвращает точку времени, хранящуюся в этом zoned_time случае, без применения часового пояса. |
get_time_zone |
Возвращает time_zone, хранящиеся в этом zoned_time файле. |
operator= |
Назначьте этому значение другого zoned_time или другого local_time zoned_time sys_time zoned_time . |
operator local_time |
Объединяет zoned_time часовой пояс с хранимой точкой времени для создания локального времени в этом часовом поясе. |
operator sys_time |
Возвращает время, хранящееся в этом zoned_time без применения часового пояса. |
Не являющиеся членами
Имя | Описание |
---|---|
operator== |
Определяет, равны ли два экземпляра zoned_time . |
operator<< |
Выводит объект в заданный zoned_time поток. |
Псевдонимы удобных типов
Имя | Описание |
---|---|
zoned_seconds |
Синоним для zoned_time<seconds>; |
zoned_time::duration |
Длительность, измеряемая в секундах. Это синоним common_type_t<Duration, seconds>; |
Требования
Заголовок: <chrono>
Microsoft C++ поддерживает zoned_time
класс, начиная с Visual Studio 2019 версии 16.10.
Данные часового пояса доступны только для Windows 10 версии 1903/19H1 и более поздних версий, а также Windows Server 2022 и более поздних версий.
Пространство имен: std::chrono
Параметр компилятора: /std:c++latest
Конструкторы
Создайте 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);
Параметры
c
Указывает, как обрабатывать неоднозначные или несуществующие локальные времена при преобразовании объекта local_time
в .sys_time
Дополнительные сведения см choose
. в перечислении.
name
Имя часового пояса.
st
Значение sys_time
с заданной длительностью. Используется для задания времени.
tp
Значение local_time
с заданной длительностью. Используется для задания времени.
y
Скопированный zoned_time
для создания нового zoned_time
.
z
То time_zone
есть std::move(z)
"d в построенный zoned_time
".
zt
Указатель zoned_time
, который находится std::move(zt)
в построенном zoned_time
объекте.
Замечания
1) Инициализирует часовой пояс с traits::default_zone()
помощью и по умолчанию создает точку времени.
2) Конструктор копирования по умолчанию.
3) Инициализирует часовой пояс с std::move(z)
помощью и по умолчанию создает точку времени.
4) Инициализирует часовой пояс и traits::default_zone()
время с st
.
5) Инициализирует часовой пояс и traits::locate_zone(name)
создает точку времени по умолчанию.
6) Инициализирует часовой пояс и std::move(z)
время, преобразуя tp
как будто z->to_sys(tp)
.
7) Инициализирует часовой пояс и std::move(z)
время, как будто z->to_sys(tp, c)
. См choose
. перечисление о том, как параметр c
влияет на результат.
8) Инициализирует часовой пояс и std::move(z)
время с st
.
9) Эквивалентно строительству с {traits::locate_zone(name), tp}
.
10) Эквивалентно строительству с {traits::locate_zone(name), tp, c}
.
11) Эквивалентно строительству с {traits::locate_zone(name), st}
.
12) Эквивалентно строительству с {traits::locate_zone(name), y}
.
13) Эквивалентно строительству с {traits::locate_zone(name), y, c}
. Параметр choose
, c
не действует.
14) Инициализирует часовой пояс из y
часового пояса и точки времени.
15) Инициализирует часовой пояс и std::move(z)
время от y
точки времени.
16) Эквивалентно строительству с {z, y}
. Параметр choose
, c
не действует.
Примечание.
zoned_time
не имеет конструктора перемещения. Попытка переместить его приводит к копированию с помощью конструктора копирования по умолчанию.
Пример: создание zoned_time
Ниже показано, как создать экземпляр часового zoned_time
пояса "Antarctica/Casey"
9.15.2021 в 4:45:
// 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
Использует часовой пояс в этом zoned_time
для получения сведений об точке времени в этой точке zoned_time
.
sys_info get_info() const;
Возвращаемое значение
Значение sys_info
, содержащее смещение в формате UTC для часового пояса и времени, смещение корректировки летнего времени и т. д.
Пример: 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
Возвращает значение local_time<duration>
, представляющее местное время, заданное часовой zoned_time
поясом и временем.
local_time<duration> get_local_time() const;
Возвращаемое значение
Возвращаемый local_time
объект является синонимом.time_point<local_t, duration>
Пример: 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
Возвращает время, хранящееся в параметре zoned_time
system_clock
.
sys_time<duration> get_sys_time() const;
Возвращаемое значение
Время, хранящееся в этом zoned_time
, без каких-либо изменений часового пояса. Он представляет системное время настенных часов в виде time_point. Возвращаемый sys_time
является синонимом template <class Duration> time_point<system_clock Duration>;
Пример: 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
Возвращает часовой пояс, хранящийся в этом zoned_time
файле.
TimeZonePtr get_time_zone() const;
Возвращаемое значение
Указатель на time_zone , хранящийся в этом zoned_time
файле.
Пример: 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=
Назначьте другому zoned_time
this
. Или назначьте только другие zoned_time
.sys_time
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);
Параметры
zt
this
Назначение zoned_time
одному.
st
Назначение sys_time
хранящимся time_point
в этом zoned_time
объекте.
lt
Назначение local_time
хранящимся time_point
в этом zoned_time
объекте.
Возвращаемое значение
*this
Пример: 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
Замечания
1) Оператор назначения копирования по умолчанию. Копирует (не перемещает) сохраненный time_point
и time_zone указатель из другого zoned_time
в этот zoned_time
.
2) Назначается st
этому zoned_time
элементуtime_point
. После назначения *this->get_sys_time() == st;
3) преобразует lt
(a local_time
) в объект sys_time
. Это делает это по сути так, как timeZone->to_sys(lt)
и присваивает результат [time_point
] в этом zoned_time
. После назначения *this->get_local_time() == lt;
operator local_time
Объединяет zoned_time
часовой пояс с хранимой точкой времени для создания локального времени в этом часовом поясе.
explicit operator local_time<duration>() const;
Возвращаемое значение
Объект, time_point<local_t, Duration>
представляющий местное время для часового пояса и часового пояса в этом zoned_time
. Вы можете использовать удобный псевдоним local_time
для представления значения, возвращаемого этой функцией.
Возвращаемое значение эффективно timeZone->to_local(get_sys_time());
Пример: 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
Возвращает точку времени, хранящуюся в этом zoned_time
случае, без применения часового пояса.
operator sys_time<duration>() const;
Возвращаемое значение
Время, хранящееся в этом zoned_time
, без каких-либо изменений часового пояса. Возвращаемый sys_time
является синонимом template <class Duration> time_point<system_clock Duration>;
и представляет тот же момент времени, который хранится в этом объекте zoned_time
.
Пример: 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
См. также
<chrono>
time_point
time_zone
Структура zoned_traits
Справочник по файлам заголовков