Namespaces
Variants

std::chrono::zoned_time<Duration,TimeZonePtr>:: zoned_time

From cppreference.net
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,

const std:: chrono :: zoned_time < Duration2, TimeZonePtr2 > & zt ) ;
(13) (C++20 이후)
template < class Duration2, class TimeZonePtr2 >

zoned_time ( TimeZonePtr z,
const std:: chrono :: zoned_time < Duration2, TimeZonePtr2 > & zt,

std:: chrono :: choose ) ;
(14) (C++20 이후)
template < class Duration2, class TimeZonePtr2 >

zoned_time ( std:: string_view name,

const std:: chrono :: zoned_time < Duration2, TimeZonePtr2 > & zt ) ;
(15) (C++20 이후)
template < class Duration2, class TimeZonePtr2 >

zoned_time ( std:: string_view name,
const std:: chrono :: zoned_time < Duration2, TimeZonePtr2 > & zt,

std:: chrono :: choose ) ;
(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)
a) 지정된 생성자가 traits :: default_zone ( ) (1,2) 를 호출하도록 지정된 경우, 해당 표현식이 올바른 형식이 아닐 때 오버로드 해결에 참여하지 않습니다.
b) 기본 설정된 복사 생성자 (3) 는 다음의 경우 삭제된 것으로 정의됩니다: std:: is_copy_constructible_v < TimeZonePtr > 가 false인 경우.
c) std::string_view 매개변수 name (6,8,10,12,15,16) 를 갖는 생성자들은 traits :: locate_zone ( name ) 가 올바른 형식이 아니거나 해당 표현식이 TimeZonePtr 로 변환 가능하지 않은 경우 오버로드 해결에 참여하지 않습니다.
d) zone - > to_sys 를 호출하도록 지정된 생성자들은 (9-12) 해당 호출 표현식이 올바른 형식이 아니거나 결과가 std:: chrono :: sys_time < duration > 로 변환 가능하지 않은 경우 오버로드 해결에 참여하지 않습니다.
e) 템플릿 매개변수 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