다음을 통해 공유


zoned_time 클래스

A zoned_time 는 a와 a의 페어링입니다 time_zone time_point. 특정 표준 시간대 내에서 의미를 부여합니다 time_point .

구문

template<class Duration, class TimeZonePtr = const time_zone*>
class zoned_time ;  // C++20

설명

A zoned_time 는 항상 유효한 표준 시간대를 나타내며 해당 표준 시간대에 존재하고 모호하지 않은 시점을 나타냅니다.

멤버

속성 설명
생성자 를 생성합니다 zoned_time.
get_info zoned_time zoned_time표준 시간대를 사용하여 .
get_local_time 표준 시간대의 표준 시간대 zoned_time 를 저장된 표준 시간대와 결합하여 해당 표준 시간대에서 현지 시간을 생성합니다.
get_sys_time 표준 시간대를 적용하지 않고 이 zoned_time 위치에 저장된 시간 지점을 가져옵니다.
get_time_zone zoned_time저장된 time_zone 가져옵니다.
operator= 다른 또는 다른 zoned_timezoned_time'의 local_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++는 Visual Studio 2019 버전 16.10부터 클래스를 지원 zoned_time 합니다.

표준 시간대 데이터는 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
지정된 기간이 있는 A sys_time 입니다. 시간을 설정하는 데 사용됩니다.

tp
지정된 기간이 있는 A local_time 입니다. 시간을 설정하는 데 사용됩니다.

y
zoned_timezoned_time를 생성하기 위해 복사한 것입니다.

z
생성된 zoned_time에 'd'인 A time_zone 입니다std::move(z).

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)z->to_sys(tp)변환하여 시간을 초기화합니다tp.
7) 표준 시간대 std::move(z)를 다음과 같이 z->to_sys(tp, c)초기화합니다. 매개 변수 c 가 결과에 미치는 영향에 대한 열거형을 참조 choose 하세요.
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 에는 이동 생성자가 없습니다. 이동하려고 하면 기본 복사 생성자를 사용하여 복사본이 생성됩니다.

예: a 생성 zoned_time

다음은 2021년 9월 15일 오후 4시 45분에 표준 시간대"Antarctica/Casey"에 대한 인스턴스를 만드는 zoned_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;
    
    return 0;
}
2021-09-16 03:45:00 GMT+11

get_info

zoned_time zoned_time표준 시간대를 사용하여 .

sys_info get_info() const;

반환 값

표준 시간대 및 시간에 대한 UTC 오프셋, 일광 절약 시간 조정 오프셋 등을 포함하는 A sys_info 입니다.

예: 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

system_clock저장된 zoned_time 시간을 가져옵니다.

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;

반환 값

zoned_time위치에 저장된 time_zone 대한 포인터입니다.

예: 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's 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
zoned_time 할당할 1입니다this.

st
sys_time zoned_time위치에 저장된 time_point 에 할당할 수 있습니다.

lt
local_time zoned_time위치에 저장된 time_point 에 할당할 수 있습니다.

반환 값

*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) 이 zoned_time위치에 할당합니다.time_point st 할당 *this->get_sys_time() == st; 후 3) (alocal_time)를 으로 sys_time변환합니다 lt . 이 작업은 기본적으로 다음과 같이 timeZone->to_sys(lt)수행되며, 이 경우 [time_point]에 zoned_time결과를 할당합니다. 할당 후 *this->get_local_time() == lt;

operator local_time

표준 시간대를 zoned_time저장된 표준 시간대와 결합하여 해당 표준 시간대에서 현지 시간을 생성합니다.

explicit operator local_time<duration>() const;

반환 값

zoned_time시간 및 표준 시간대의 현지 시간을 나타내는 A time_point<local_t, Duration> 입니다. 편의 별칭을 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 구조체
헤더 파일 참조