std::chrono::zoned_time<Duration,TimeZonePtr>:: zoned_time
|
zoned_time
(
)
;
|
(1) | (C++20 이후) |
|
zoned_time
(
const
std::
chrono
::
sys_time
<
Duration
>
&
st
)
;
|
(2) | (C++20 이후) |
|
zoned_time
(
const
zoned_time
&
other
)
=
default
;
|
(3) | (C++20 이후) |
|
template
<
class
Duration2
>
zoned_time ( const std:: chrono :: zoned_time < Duration2, TimeZonePtr > & other ) ; |
(4) | (C++20 이후) |
|
explicit
zoned_time
(
TimeZonePtr z
)
;
|
(5) | (C++20 이후) |
|
explicit
zoned_time
(
std::
string_view
name
)
;
|
(6) | (C++20 이후) |
|
zoned_time
(
TimeZonePtr z,
const
std::
chrono
::
sys_time
<
Duration
>
&
st
)
;
|
(7) | (C++20 이후) |
|
zoned_time
(
std::
string_view
name,
const
std::
chrono
::
sys_time
<
Duration
>
&
st
)
;
|
(8) | (C++20 이후) |
|
zoned_time
(
TimeZonePtr z,
const
std::
chrono
::
local_time
<
Duration
>
&
tp
)
;
|
(9) | (C++20 이후) |
|
zoned_time
(
std::
string_view
name,
const
std::
chrono
::
local_time
<
Duration
>
&
tp
)
;
|
(10) | (C++20 이후) |
|
zoned_time
(
TimeZonePtr z,
const
std::
chrono
::
local_time
<
Duration
>
&
tp,
std:: chrono :: choose c ) ; |
(11) | (C++20 이후) |
|
zoned_time
(
std::
string_view
name,
const std:: chrono :: local_time < Duration > & tp, std:: chrono :: choose c ) ; |
(12) | (C++20 이후) |
|
template
<
class
Duration2,
class
TimeZonePtr2
>
zoned_time
(
TimeZonePtr z,
|
(13) | (C++20 이후) |
|
template
<
class
Duration2,
class
TimeZonePtr2
>
zoned_time
(
TimeZonePtr z,
|
(14) | (C++20 이후) |
|
template
<
class
Duration2,
class
TimeZonePtr2
>
zoned_time
(
std::
string_view
name,
|
(15) | (C++20 이후) |
|
template
<
class
Duration2,
class
TimeZonePtr2
>
zoned_time
(
std::
string_view
name,
|
(16) | (C++20 이후) |
zoned_time
객체를 생성하며, 저장된 시간대 포인터와 시간 포인터를 다음 표에 따라 초기화합니다. 여기서
traits
는
std::
chrono
::
zoned_traits
<
TimeZonePtr
>
입니다:
| 오버로드 |
시간대 포인터 (
zone
으로 표시)
|
시간점 ( std:: chrono :: sys_time < duration > ) | 참고 |
|---|---|---|---|
| (1) | traits :: default_zone ( ) | 기본 생성됨 | (a) |
| (2) |
st
|
||
| (3) | other. get_time_zone ( ) | other. get_sys_time ( ) | (b) |
| (4) | other. get_time_zone ( ) | other. get_sys_time ( ) | (e) |
| (5) | std :: move ( z ) | 기본 생성됨 | |
| (6) | traits :: locate_zone ( name ) | (c) | |
| (7) | std :: move ( z ) |
st
|
|
| (8) | traits :: locate_zone ( name ) | (c) | |
| (9) | std :: move ( z ) | zone - > to_sys ( tp ) | (d) |
| (10) | traits :: locate_zone ( name ) | (c,d) | |
| (11) | std :: move ( z ) | zone - > to_sys ( tp, c ) | (d) |
| (12) | traits :: locate_zone ( name ) | (c,d) | |
| (13,14) | std :: move ( z ) | zt. get_sys_time ( ) | (e) |
| (15,16) | traits :: locate_zone ( name ) | (c,e) |
name
(6,8,10,12,15,16)
를 갖는 생성자들은
traits
::
locate_zone
(
name
)
가 올바른 형식이 아니거나 해당 표현식이
TimeZonePtr
로 변환 가능하지 않은 경우 오버로드 해결에 참여하지 않습니다.
Duration2
(4,13-16)
를 갖는 생성자들은
Duration2
가
Duration
으로 변환 가능하지 않을 경우 오버로드 해결에 참여하지 않습니다.
시간대 포인터(위에서 설명한 대로 초기화된)가 시간대를 참조하지 않는 경우 동작은 정의되지 않습니다.
참고 사항
zoned_time
는 이동 생성자를 가지지 않으며, 이동을 시도할 경우 기본으로 정의된 복사 생성자를 사용하여 복사가 수행됩니다
(3)
. 따라서
TimeZonePtr
가 이동 전용 타입일 경우,
zoned_time
는 이동 불가능합니다: 이동이나 복사 모두 할 수 없습니다.
생성자 (14,16) 는 std::chrono::choose 매개변수를 받지만, 해당 매개변수는 아무런 효과가 없습니다.
예제
#include <chrono> #include <iostream> #include <string_view> int main() { using std::chrono_literals::operator""y; using std::operator""sv; std::cout << std::chrono::zoned_time{} << " : default\n"; constexpr std::string_view location1{"America/Phoenix"sv}; std::cout << std::chrono::zoned_time{location1} << " : " << location1 << '\n'; const std::chrono::time_zone* timeZonePtr = std::chrono::locate_zone("UTC"); std::cout << std::chrono::zoned_time{timeZonePtr} << " : UTC time zone\n"; constexpr auto location2{"Europe/Rome"sv}; std::cout << std::chrono::zoned_time{location2, std::chrono::local_days{2021y/12/31}} << " : " << location2 << '\n'; constexpr auto location3{"Europe/Rome"sv}; constexpr auto some_date = std::chrono::sys_time<std::chrono::days>{2021y/12/31}; std::cout << std::chrono::zoned_time{location3, some_date} << " : " << location3 << '\n'; const auto now = std::chrono::floor<std::chrono::minutes>(std::chrono::system_clock::now()); constexpr auto location4{"Europe/Rome"sv}; std::cout << std::chrono::zoned_time{location4, now} << " : " << location4 << '\n'; constexpr auto NewYork{"America/New_York"sv}; constexpr auto Tokyo{"Asia/Tokyo"sv}; const std::chrono::zoned_time tz_Tokyo{Tokyo, now}; const std::chrono::zoned_time tz_NewYork{NewYork, now}; std::cout << std::chrono::zoned_time{Tokyo, tz_NewYork} << " : " << Tokyo << '\n'; std::cout << std::chrono::zoned_time{NewYork, tz_Tokyo} << " : " << NewYork << '\n'; }
가능한 출력:
1970-01-01 00:00:00 UTC : default 1969-12-31 17:00:00 MST : America/Phoenix 1970-01-01 00:00:00 UTC : UTC time zone 2021-12-31 00:00:00 CET : Europe/Rome 2021-12-31 01:00:00 CET : Europe/Rome 2021-09-20 23:04:00 CEST : Europe/Rome 2021-09-21 06:04:00 JST : Asia/Tokyo 2021-09-20 17:04:00 EDT : America/New_York