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_time zoned_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_time
새 zoned_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