Standard library header <chrono> (C++11)
From cppreference.net
이 헤더는 날짜 및 시간 라이브러리의 일부입니다.
포함 항목 |
|
|
(C++20)
|
3-way 비교 연산자 지원 |
클래스 |
|
Duration |
|
|
다음 네임스페이스에 정의됨
std::chrono
|
|
|
(C++11)
|
시간 간격
(클래스 템플릿) |
|
(C++11)
|
duration이 다른 틱 주기를 가진 duration으로 변환 가능함을 나타냄
(클래스 템플릿) |
|
(C++11)
|
주어진 타입의 틱 카운트에 대한 제로, 최소, 최대 값을 생성합니다
(클래스 템플릿) |
편의 duration typedefs |
|
|
정의된 네임스페이스
std::chrono
|
|
| std::chrono::nanoseconds (C++11) | Period가 std::nano 인 duration 타입 |
| std::chrono::microseconds (C++11) | Period가 std::micro 인 duration 타입 |
| std::chrono::milliseconds (C++11) | Period가 std::milli 인 duration 타입 |
| std::chrono::seconds (C++11) | Period가 std:: ratio < 1 > 인 duration 타입 |
| std::chrono::minutes (C++11) | Period가 std:: ratio < 60 > 인 duration 타입 |
| std::chrono::hours (C++11) | Period가 std:: ratio < 3600 > 인 duration 타입 |
| std::chrono::days (C++20) | Period가 std:: ratio < 86400 > 인 duration 타입 |
| std::chrono::weeks (C++20) | Period를 가진 duration 타입 std:: ratio < 604800 > |
| std::chrono::months (C++20) | Period가 std:: ratio < 2629746 > 인 duration 타입 |
| std::chrono::years (C++20) | Period가 std:: ratio < 31556952 > 인 duration 타입 |
시간 포인트 |
|
|
정의된 네임스페이스
std::chrono
|
|
|
(C++11)
|
시간의 한 지점
(클래스 템플릿) |
|
(C++20)
|
한 클록의 시간 포인트를 다른 클록으로 변환하는 방법을 정의하는 traits 클래스
(클래스 템플릿) |
클록 |
|
|
정의된 네임스페이스
std::chrono
|
|
|
(C++20)
|
타입이
Clock
요구 사항을 만족하는지 판별합니다
(클래스 템플릿) (변수 템플릿) |
|
(C++11)
|
시스템 전체 실시간 시계의 벽시계 시간
(클래스) |
|
(C++11)
|
조정되지 않는 모노토닉 클록
(클래스) |
|
(C++11)
|
사용 가능한 가장 짧은 틱 주기를 가진 클록
(클래스) |
|
(C++20)
|
Clock
협정 세계시(UTC)를 위한 Clock
(클래스) |
|
(C++20)
|
Clock
국제 원자시(TAI)를 위한 Clock
(클래스) |
|
(C++20)
|
Clock
GPS 시간을 위한 Clock
(class) |
|
(C++20)
|
Clock
파일 시간에 사용되는
파일 시간
(typedef) |
|
(C++20)
|
지역 시간을 나타내는 의사 시계
(클래스) |
캘린더 |
|
|
정의된 네임스페이스
std::chrono
|
|
|
(C++20)
|
월의
마지막
날 또는 요일을 나타내는
태그 클래스
(클래스) |
|
(C++20)
|
월의 하루를 나타냄
(클래스) |
|
(C++20)
|
연도의 월을 나타냄
(class) |
|
(C++20)
|
그레고리력의 연도를 나타냄
(class) |
|
(C++20)
|
그레고리력의 요일을 나타냄
(class) |
|
(C++20)
|
한 달의 n
번째
weekday
를 나타냄
(클래스) |
|
(C++20)
|
한 달의 마지막
weekday
를 나타냄
(클래스) |
|
(C++20)
|
특정
month
의 특정
day
를 나타냄
(클래스) |
|
(C++20)
|
특정
month
의 마지막 날을 나타냄
(클래스) |
|
(C++20)
|
특정
month
의 n
th
weekday
를 나타냄
(클래스) |
|
(C++20)
|
특정
month
의 마지막
weekday
를 나타냄
(클래스) |
|
(C++20)
|
특정
year
의 특정
month
를 나타냄
(클래스) |
|
(C++20)
|
특정
year
,
month
, 그리고
day
를 나타냄
(클래스) |
|
(C++20)
|
특정
year
와
month
의 마지막 날을 나타냄
(클래스) |
|
(C++20)
|
특정
year
와
month
의 n
th
weekday
를 나타냄
(클래스) |
|
(C++20)
|
특정
year
와
month
의 마지막
weekday
를 나타냄
(클래스) |
시간대 |
|
|
정의된 네임스페이스
std::chrono
|
|
|
(C++20)
|
하루 중 시간을 나타냄
(클래스 템플릿) |
시간대 |
|
|
정의된 네임스페이스
std::chrono
|
|
|
(C++20)
|
IANA 시간대 데이터베이스
사본을 기술함
(클래스) |
|
(C++20)
|
tzdb
의 연결 리스트를 나타냅니다
(클래스) |
|
(C++20)
|
시간대를 나타냄
(클래스) |
|
(C++20)
|
특정 시간점에서의 시간대 정보를 나타냄
(클래스) |
|
(C++20)
|
로컬 시간을 UNIX 시간으로 변환하는 정보를 나타냅니다
(클래스) |
|
(C++20)
|
모호한 현지 시간의 해결 방법을 선택합니다
(enum) |
|
(C++20)
|
zoned_time
에서 사용하는 시간대 포인터에 대한 traits 클래스
(클래스 템플릿) |
|
(C++20)
|
시간대와 시간 점을 나타냄
(클래스) |
|
(C++20)
|
시간대의 대체 이름을 나타냄
(클래스) |
|
(C++20)
|
존재하지 않는 지역 시간을 보고하기 위해 던져지는 예외
(클래스) |
|
(C++20)
|
지역 시간이 모호함을 보고하기 위해 던져지는 예외
(클래스) |
윤초 |
|
|
정의된 네임스페이스
std::chrono
|
|
|
(C++20)
|
윤초 삽입에 대한 정보를 포함함
(클래스) |
|
(C++20)
|
윤초 삽입 정보
(클래스) |
특수화 |
|
|
정의된 네임스페이스
std
|
|
|
std::common_type
트레이트의 특수화
(클래스 템플릿 특수화) |
|
|
std::common_type
트레이트를 특수화함
(클래스 템플릿 특수화) |
|
duration
에 대한 포맷팅 지원
(클래스 템플릿 특수화) |
|
sys_time
에 대한 서식 지원
(클래스 템플릿 특수화) |
|
utc_time
에 대한 서식 지원
(클래스 템플릿 특수화) |
|
tai_time
에 대한 서식 지원
(클래스 템플릿 특수화) |
|
gps_time
에 대한 서식 지원
(클래스 템플릿 특수화) |
|
file_time
에 대한 서식 지원
(클래스 템플릿 특수화) |
|
local_time
에 대한 서식 지원
(클래스 템플릿 특수화) |
|
day
에 대한 형식화 지원
(클래스 템플릿 특수화) |
|
month
에 대한 서식 지원
(클래스 템플릿 특수화) |
|
year
에 대한 서식 지원
(클래스 템플릿 특수화) |
|
weekday
에 대한 서식 지원
(클래스 템플릿 특수화) |
|
weekday_indexed
에 대한 서식 지원
(클래스 템플릿 특수화) |
|
weekday_last
에 대한 서식 지원
(클래스 템플릿 특수화) |
|
month_day
에 대한 서식 지원
(클래스 템플릿 특수화) |
|
month_day_last
에 대한 서식 지원
(클래스 템플릿 특수화) |
|
month_weekday
에 대한 서식 지원
(클래스 템플릿 특수화) |
|
month_weekday_last
에 대한 서식 지원
(클래스 템플릿 특수화) |
|
year_month
에 대한 서식 지원
(클래스 템플릿 특수화) |
|
year_month_day
에 대한 서식 지원
(클래스 템플릿 특수화) |
|
year_month_day_last
에 대한 서식 지정 지원
(클래스 템플릿 특수화) |
|
year_month_weekday
에 대한 서식 지원
(클래스 템플릿 특수화) |
|
year_month_weekday_last
에 대한 서식 지원
(클래스 템플릿 특수화) |
|
hh_mm_ss
에 대한 포맷팅 지원
(클래스 템플릿 특수화) |
|
sys_info
에 대한 포맷팅 지원
(클래스 템플릿 특수화) |
|
local_info
에 대한 서식 지원
(클래스 템플릿 특수화) |
|
zoned_time
에 대한 서식 지원
(클래스 템플릿 특수화) |
|
|
std::chrono::duration
에 대한 해시 지원
(클래스 템플릿 특수화) |
|
|
std::chrono::time_point
에 대한 해시 지원
(클래스 템플릿 특수화) |
|
|
(C++26)
|
std::chrono::day
에 대한 해시 지원
(클래스 템플릿 특수화) |
|
(C++26)
|
std::chrono::month
에 대한 해시 지원
(클래스 템플릿 특수화) |
|
(C++26)
|
std::chrono::year
에 대한 해시 지원
(클래스 템플릿 특수화) |
|
(C++26)
|
std::chrono::weekday
에 대한 해시 지원
(클래스 템플릿 특수화) |
|
std::chrono::weekday_indexed
에 대한 해시 지원
(클래스 템플릿 특수화) |
|
|
std::chrono::weekday_last
에 대한 해시 지원
(클래스 템플릿 특수화) |
|
|
std::chrono::month_day
에 대한 해시 지원
(클래스 템플릿 특수화) |
|
|
std::chrono::month_day_last
에 대한 해시 지원
(클래스 템플릿 특수화) |
|
|
std::chrono::month_weekday
에 대한 해시 지원
(클래스 템플릿 특수화) |
|
|
std::chrono::month_weekday_last
에 대한 해시 지원
(클래스 템플릿 특수화) |
|
|
std::chrono::year_month
에 대한 해시 지원
(클래스 템플릿 특수화) |
|
|
std::chrono::year_month_day
에 대한 해시 지원
(클래스 템플릿 특수화) |
|
|
std::chrono::year_month_day_last
에 대한 해시 지원
(클래스 템플릿 특수화) |
|
|
std::chrono::year_month_weekday
에 대한 해시 지원
(클래스 템플릿 특수화) |
|
|
std::chrono::year_month_weekday_last
에 대한 해시 지원
(클래스 템플릿 특수화) |
|
|
std::chrono::zoned_time
에 대한 해시 지원
(클래스 템플릿 특수화) |
|
|
std::chrono::leap_second
에 대한 해시 지원
(클래스 템플릿 특수화) |
|
전방 선언 |
|
|
헤더 파일에 정의됨
<functional>
|
|
|
(C++11)
|
해시 함수 객체
(클래스 템플릿) |
함수 |
|
Duration |
|
|
정의된 네임스페이스
std::chrono
|
|
|
duration을 인자로 사용하는 산술 연산 구현
(함수 템플릿) |
|
|
(C++11)
(C++11)
(C++20에서 제거됨)
(C++11)
(C++11)
(C++11)
(C++11)
(C++20)
|
두 지속 시간을 비교함
(함수 템플릿) |
|
(C++11)
|
다른 틱 간격을 가진 duration으로 변환합니다
(함수 템플릿) |
|
(C++17)
|
duration을 다른 단위로 변환하며 내림 처리
(함수 템플릿) |
|
(C++17)
|
duration을 다른 단위로 변환하며 올림 처리
(함수 템플릿) |
|
(C++17)
|
duration을 다른 단위로 변환하며, 가장 가까운 값으로 반올림(동점 시 짝수로)
(함수 템플릿) |
|
(C++17)
|
기간의 절댓값을 구함
(함수 템플릿) |
타임 포인트 |
|
|
정의된 네임스페이스
std::chrono
|
|
|
(C++11)
|
time point와 관련된 덧셈 및 뺄셈 연산 수행
(함수 템플릿) |
|
(C++11)
(C++11)
(C++20에서 제거됨)
(C++11)
(C++11)
(C++11)
(C++11)
(C++20)
|
두 시간 포인트를 비교함
(함수 템플릿) |
|
(C++11)
|
동일한 클록 상에서 다른 duration을 가진 시간 포인트로 변환합니다
(함수 템플릿) |
|
(C++17)
|
time_point를 다른 단위로 변환하며 내림 처리
(함수 템플릿) |
|
(C++17)
|
time_point를 다른 단위로 변환하며 올림 처리
(함수 템플릿) |
|
(C++17)
|
time_point를 다른 단위로 변환하며, 가장 가까운 값으로 반올림(동점 시 짝수로 처리)
(함수 템플릿) |
제공된 형식에 따라 스트림에서
sys_time
을 파싱합니다
(함수 템플릿) |
|
제공된 형식에 따라 스트림에서
utc_time
을 파싱합니다
(함수 템플릿) |
|
제공된 형식에 따라 스트림에서
tai_time
을 파싱합니다
(함수 템플릿) |
|
제공된 형식에 따라 스트림에서
gps_time
을 파싱합니다
(함수 템플릿) |
|
제공된 형식에 따라 스트림에서
file_time
을 파싱합니다
(함수 템플릿) |
|
제공된 형식에 따라 스트림에서
local_time
을 파싱합니다
(함수 템플릿) |
|
|
(C++20)
|
한 클록의 시간 포인트를 다른 클록으로 변환
(함수 템플릿) |
캘린더 |
|
|
정의된 네임스페이스
std::chrono
|
|
|
(C++20)
|
두
day
값을 비교
(함수) |
|
(C++20)
|
두 개의
month
값을 비교
(함수) |
|
(C++20)
|
두
year
값을 비교
(함수) |
|
(C++20)
|
두
weekday
값을 비교
(함수) |
|
(C++20)
|
두
weekday_indexed
값을 비교
(함수) |
|
(C++20)
|
두
weekday_last
값을 비교합니다
(함수) |
|
(C++20)
|
두
month_day
값을 비교
(함수) |
|
(C++20)
|
두
month_day_last
값을 비교
(함수) |
|
(C++20)
|
두
month_weekday
값을 비교
(함수) |
|
(C++20)
|
두 개의
month_weekday_last
값을 비교함
(함수) |
|
(C++20)
|
두 개의
year_month
값을 비교합니다
(함수) |
|
(C++20)
|
두
year_month_day
값을 비교
(함수) |
|
(C++20)
|
두 개의
year_month_day_last
값을 비교합니다
(함수) |
|
(C++20)
|
두
year_month_weekday
값을 비교
(함수) |
|
(C++20)
|
두 개의
year_month_weekday_last
값을 비교합니다
(함수) |
|
(C++20)
|
일 수와
day
를 더하거나 빼거나, 두
day
사이의 차이를 구함
(함수) |
|
(C++20)
|
month
에 대한 산술 연산 수행
(함수) |
|
(C++20)
|
year
에 대한 산술 연산 수행
(함수) |
|
(C++20)
|
weekday
에 대한 산술 연산 수행
(함수) |
|
(C++20)
|
year_month
에 대한 산술 연산 수행
(함수) |
|
(C++20)
|
year_month_day
와 일정 년수 또는 월수를 더하거나 뺌
(함수) |
|
(C++20)
|
year_month_day_last
와 일부 연수 또는 월수를 더하거나 뺌
(함수) |
|
(C++20)
|
year_month_weekday
에 연수나 월수를 더하거나 뺌
(함수) |
|
(C++20)
|
year_month_weekday_last
와 일부 연수 또는 월수를 더하거나 뺌
(함수) |
|
(C++20)
|
그레고리력 날짜 생성을 위한 관용적 구문
(함수) |
시간대 |
|
|
정의된 네임스페이스
std::chrono
|
|
|
(C++20)
|
12시간/24시간 형식의 시간을 상호 변환
(함수) |
시간대 |
|
|
정의된 네임스페이스
std::chrono
|
|
|
전역 시간대 데이터베이스 정보에 접근하고 제어합니다
(함수) |
|
|
(C++20)
|
이름을 기반으로
time_zone
을 찾습니다
(함수) |
|
(C++20)
|
두
time_zone
객체를 비교합니다
(함수) |
|
(C++20)
|
두
zoned_time
값을 비교합니다
(함수 템플릿) |
|
(C++20)
|
두 개의
time_zone_link
객체를 비교합니다
(함수) |
윤초 |
|
|
정의된 네임스페이스
std::chrono
|
|
|
(C++20)
|
utc_time
객체에서 윤초 삽입 정보를 획득합니다
(함수 템플릿) |
두
leap_second
값을 비교하거나
leap_second
값과
sys_time
을 비교합니다
(함수 템플릿) |
|
입출력 |
|
|
정의된 네임스페이스
std::chrono
|
|
|
(C++20)
|
duration
에 대한 스트림 출력을 수행합니다
(함수 템플릿) |
sys_time
에 대한 스트림 출력을 수행합니다
(함수 템플릿) |
|
utc_time
에 대한 스트림 출력을 수행합니다
(함수 템플릿) |
|
tai_time
에 대한 스트림 출력을 수행합니다
(함수 템플릿) |
|
gps_time
에 대한 스트림 출력을 수행합니다
(함수 템플릿) |
|
file_time
에 대한 스트림 출력을 수행합니다
(함수 템플릿) |
|
|
(C++20)
|
스트림에
day
를 출력합니다
(함수 템플릿) |
|
(C++20)
|
스트림에
month
를 출력합니다
(함수 템플릿) |
|
(C++20)
|
스트림에
year
를 출력합니다
(함수 템플릿) |
|
(C++20)
|
스트림에
weekday
를 출력합니다
(함수 템플릿) |
|
(C++20)
|
스트림에
weekday_indexed
출력
(함수 템플릿) |
|
(C++20)
|
weekday_last
를 스트림으로 출력
(함수 템플릿) |
|
(C++20)
|
month_day
를 스트림으로 출력
(함수 템플릿) |
|
(C++20)
|
month_day_last
를 스트림으로 출력합니다
(함수 템플릿) |
|
(C++20)
|
month_weekday
를 스트림으로 출력합니다
(함수 템플릿) |
|
(C++20)
|
스트림에
month_weekday_last
출력
(함수 템플릿) |
|
(C++20)
|
스트림에
year_month
를 출력합니다
(함수 템플릿) |
|
(C++20)
|
year_month_day
를 스트림으로 출력합니다
(함수 템플릿) |
|
(C++20)
|
스트림에
year_month_day_last
를 출력합니다
(함수 템플릿) |
|
(C++20)
|
스트림에
year_month_weekday
를 출력합니다
(함수 템플릿) |
|
(C++20)
|
year_month_weekday_last
를 스트림으로 출력
(함수 템플릿) |
|
(C++20)
|
스트림에
hh_mm_ss
출력
(함수 템플릿) |
|
(C++20)
|
스트림에
sys_info
를 출력합니다
(함수 템플릿) |
|
(C++20)
|
local_info
를 스트림으로 출력
(함수 템플릿) |
|
(C++20)
|
zoned_time
을 스트림으로 출력
(함수 템플릿) |
|
(C++20)
|
제공된 형식에 따라 스트림에서
day
를 파싱합니다
(함수 템플릿) |
|
(C++20)
|
제공된 형식에 따라 스트림에서
month
를 파싱합니다
(함수 템플릿) |
|
(C++20)
|
제공된 형식에 따라 스트림에서
year
을 파싱합니다
(함수 템플릿) |
|
(C++20)
|
제공된 형식에 따라 스트림에서
weekday
를 파싱합니다
(함수 템플릿) |
|
(C++20)
|
제공된 형식에 따라 스트림에서
month_day
를 파싱합니다
(함수 템플릿) |
|
(C++20)
|
제공된 형식에 따라 스트림에서
year_month
를 파싱합니다
(함수 템플릿) |
|
(C++20)
|
제공된 형식에 따라 스트림에서
year_month_day
를 파싱합니다
(함수 템플릿) |
|
(C++20)
|
스트림에서
chrono
객체를 파싱합니다
(함수 템플릿) |
리터럴 |
|
|
인라인 네임스페이스
std::literals::chrono_literals
에서 정의됨
|
|
|
(C++14)
|
시간을 나타내는
std::chrono::duration
리터럴
(함수) |
|
(C++14)
|
분을 나타내는
std::chrono::duration
리터럴
(함수) |
|
(C++14)
|
초를 나타내는
std::chrono::duration
리터럴
(함수) |
|
(C++14)
|
밀리초를 나타내는
std::chrono::duration
리터럴
(함수) |
|
(C++14)
|
마이크로초를 나타내는
std::chrono::duration
리터럴
(함수) |
|
(C++14)
|
나노초를 나타내는
std::chrono::duration
리터럴
(함수) |
|
(C++20)
|
월의 날짜를 나타내는
std::chrono::day
리터럴
(함수) |
|
(C++20)
|
특정 연도를 나타내는
std::chrono::year
리터럴
(함수) |
시놉시스
#include <compare> namespace std { namespace chrono { // 클래스 템플릿 duration template<class Rep, class Period = ratio<1>> class duration; // 클래스 템플릿 time_point template<class Clock, class Duration = typename Clock::duration> class time_point; } // common_type 특수화 template<class Rep1, class Period1, class Rep2, class Period2> struct common_type<chrono::duration<Rep1, Period1>, chrono::duration<Rep2, Period2>>; template<class Clock, class Duration1, class Duration2> struct common_type<chrono::time_point<Clock, Duration1>, chrono::time_point<Clock, Duration2>>; namespace chrono { // customization traits template<class Rep> struct treat_as_floating_point; template<class Rep> inline constexpr bool treat_as_floating_point_v = treat_as_floating_point<Rep>::value; template<class Rep> struct duration_values; template<class T> struct is_clock; template<class T> inline constexpr bool is_clock_v = is_clock<T>::value; // duration arithmetic template<class Rep1, class Period1, class Rep2, class Period2> constexpr common_type_t<duration<Rep1, Period1>, duration<Rep2, Period2>> operator+(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs); template<class Rep1, class Period1, class Rep2, class Period2> constexpr common_type_t<duration<Rep1, Period1>, duration<Rep2, Period2>> operator-(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs); template<class Rep1, class Period, class Rep2> constexpr duration<common_type_t<Rep1, Rep2>, Period> operator*(const duration<Rep1, Period>& d, const Rep2& s); template<class Rep1, class Rep2, class Period> constexpr duration<common_type_t<Rep1, Rep2>, Period> operator*(const Rep1& s, const duration<Rep2, Period>& d); template<class Rep1, class Period, class Rep2> constexpr duration<common_type_t<Rep1, Rep2>, Period> operator/(const duration<Rep1, Period>& d, const Rep2& s); template<class Rep1, class Period1, class Rep2, class Period2> constexpr common_type_t<Rep1, Rep2> operator/(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs); template<class Rep1, class Period, class Rep2> constexpr duration<common_type_t<Rep1, Rep2>, Period> operator%(const duration<Rep1, Period>& d, const Rep2& s); template<class Rep1, class Period1, class Rep2, class Period2> constexpr common_type_t<duration<Rep1, Period1>, duration<Rep2, Period2>> operator%(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs); // duration comparisons template<class Rep1, class Period1, class Rep2, class Period2> constexpr bool operator==(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs); template<class Rep1, class Period1, class Rep2, class Period2> constexpr bool operator< (const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs); template<class Rep1, class Period1, class Rep2, class Period2> constexpr bool operator> (const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs); template<class Rep1, class Period1, class Rep2, class Period2> constexpr bool operator<=(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs); template<class Rep1, class Period1, class Rep2, class Period2> constexpr bool operator>=(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs); template<class Rep1, class Period1, class Rep2, class Period2> requires /* 설명 참조 */ constexpr auto operator<=>(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs); // 변환 template<class ToDuration, class Rep, class Period> constexpr ToDuration duration_cast(const duration<Rep, Period>& d); template<class ToDuration, class Rep, class Period> constexpr ToDuration floor(const duration<Rep, Period>& d); template<class ToDuration, class Rep, class Period> constexpr ToDuration ceil(const duration<Rep, Period>& d); template<class ToDuration, class Rep, class Period> constexpr ToDuration round(const duration<Rep, Period>& d); // duration I/O template<class CharT, class Traits, class Rep, class Period> basic_ostream<CharT, Traits>& operator<<(basic_ostream<CharT, Traits>& os, const duration<Rep, Period>& d); template<class CharT, class Traits, class Rep, class Period, class Alloc = allocator<CharT>> basic_istream<CharT, Traits>& from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt, duration<Rep, Period>& d, basic_string<CharT, Traits, Alloc>* abbrev = nullptr, minutes* offset = nullptr); // 편의성을 위한 typedefs using nanoseconds = duration</* 최소 64비트 크기의 부호 있는 정수형 */, nano>; using microseconds = duration</* 최소 55비트 크기의 부호 있는 정수형 */, micro>; using milliseconds = duration</* 최소 45비트 크기의 부호 있는 정수형 */, milli>; using seconds = duration</* 최소 35비트 크기의 부호 있는 정수형 */>; using minutes = duration</* 최소 29비트의 부호 있는 정수형 */, ratio< 60>>; using hours = duration</* 최소 23비트의 부호 있는 정수형 */, ratio<3600>>; using days = duration</* 최소 25비트의 부호 있는 정수형 */, ratio_multiply<ratio<24>, hours::period>>; using weeks = duration</* 최소 22비트의 부호 있는 정수형 */, ratio_multiply<ratio<7>, days::period>>; using years = duration</* 최소 17비트 크기의 부호 있는 정수형 */, ratio_multiply<ratio<146097, 400>, days::period>>; using months = duration</* 최소 20비트 크기의 부호 있는 정수형 */, ratio_divide<years::period, ratio<12>>>; // time_point 연산 template<class Clock, class Duration1, class Rep2, class Period2> constexpr time_point<Clock, common_type_t<Duration1, duration<Rep2, Period2>>> operator+(const time_point<Clock, Duration1>& lhs, const duration<Rep2, Period2>& rhs); template<class Rep1, class Period1, class Clock, class Duration2> constexpr time_point<Clock, common_type_t<duration<Rep1, Period1>, Duration2>> operator+(const duration<Rep1, Period1>& lhs, const time_point<Clock, Duration2>& rhs); template<class Clock, class Duration1, class Rep2, class Period2> constexpr time_point<Clock, common_type_t<Duration1, duration<Rep2, Period2>>> operator-(const time_point<Clock, Duration1>& lhs, const duration<Rep2, Period2>& rhs); template<class Clock, class Duration1, class Duration2> constexpr common_type_t<Duration1, Duration2> operator-(const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs); // time_point 비교 template<class Clock, class Duration1, class Duration2> constexpr bool operator==(const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs); template<class Clock, class Duration1, class Duration2> constexpr bool operator< (const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs); template<class Clock, class Duration1, class Duration2> constexpr bool operator> (const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs); template<class Clock, class Duration1, class Duration2> constexpr bool operator<=(const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs); template<class Clock, class Duration1, class Duration2> constexpr bool operator>=(const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs); template<class Clock, class Duration1, three_way_comparable_with<Duration1> Duration2> constexpr auto operator<=>(const time_point<Clock, Duration1>& lhs, const time_point<Clock, Duration2>& rhs); // 변환 template<class ToDuration, class Clock, class Duration> constexpr time_point<Clock, ToDuration> time_point_cast(const time_point<Clock, Duration>& t); template<class ToDuration, class Clock, class Duration> constexpr time_point<Clock, ToDuration> floor(const time_point<Clock, Duration>& tp); template<class ToDuration, class Clock, class Duration> constexpr time_point<Clock, ToDuration> ceil(const time_point<Clock, Duration>& tp); template<class ToDuration, class Clock, class Duration> constexpr time_point<Clock, ToDuration> round(const time_point<Clock, Duration>& tp); // 특수화된 알고리즘 template<class Rep, class Period> constexpr duration<Rep, Period> abs(duration<Rep, Period> d); // class system_clock class system_clock; template<class Duration> using sys_time = time_point<system_clock, Duration>; using sys_seconds = sys_time<seconds>; using sys_days = sys_time<days>; template<class CharT, class Traits, class Duration> basic_ostream<CharT, Traits>& operator<<(basic_ostream<CharT, Traits>& os, const sys_time<Duration>& tp); template<class CharT, class Traits> basic_ostream<CharT, Traits>& operator<<(basic_ostream<CharT, Traits>& os, const sys_days& dp); template<class CharT, class Traits, class Duration, class Alloc = allocator<CharT>> basic_istream<CharT, Traits>& from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt, sys_time<Duration>& tp, basic_string<CharT, Traits, Alloc>* abbrev = nullptr, minutes* offset = nullptr); // class utc_clock class utc_clock; template<class Duration> using utc_time = time_point<utc_clock, Duration>; using utc_seconds = utc_time<seconds>; template<class CharT, class Traits, class Duration> basic_ostream<CharT, Traits>& operator<<(basic_ostream<CharT, Traits>& os, const utc_time<Duration>& t); template<class CharT, class Traits, class Duration, class Alloc = allocator<CharT>> basic_istream<CharT, Traits>& from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt, utc_time<Duration>& tp, basic_string<CharT, Traits, Alloc>* abbrev = nullptr, minutes* offset = nullptr); struct leap_second_info; template<class Duration> leap_second_info get_leap_second_info(const utc_time<Duration>& ut); // class tai_clock class tai_clock; template<class Duration> using tai_time = time_point<tai_clock, Duration>; using tai_seconds = tai_time<seconds>; template<class CharT, class Traits, class Duration> basic_ostream<CharT, Traits>& operator<<(basic_ostream<CharT, Traits>& os, const tai_time<Duration>& t); template<class CharT, class Traits, class Duration, class Alloc = allocator<CharT>> basic_istream<CharT, Traits>& from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt, tai_time<Duration>& tp, basic_string<CharT, Traits, Alloc>* abbrev = nullptr, minutes* offset = nullptr); // class gps_clock class gps_clock; template<class Duration> using gps_time = time_point<gps_clock, Duration>; using gps_seconds = gps_time<seconds>; template<class CharT, class Traits, class Duration> basic_ostream<CharT, Traits>& operator<<(basic_ostream<CharT, Traits>& os, const gps_time<Duration>& t); template<class CharT, class Traits, class Duration, class Alloc = allocator<CharT>> basic_istream<CharT, Traits>& from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt, gps_time<Duration>& tp, basic_string<CharT, Traits, Alloc>* abbrev = nullptr, minutes* offset = nullptr); // type file_clock using file_clock = /* 설명 참조 */; template<class Duration> using file_time = time_point<file_clock, Duration>; template<class CharT, class Traits, class Duration> basic_ostream<CharT, Traits>& operator<<(basic_ostream<CharT, Traits>& os, const file_time<Duration>& tp); template<class CharT, class Traits, class Duration, class Alloc = allocator<CharT>> basic_istream<CharT, Traits>& from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt, file_time<Duration>& tp, basic_string<CharT, Traits, Alloc>* abbrev = nullptr, minutes* offset = nullptr); // class steady_clock class steady_clock; // class high_resolution_clock class high_resolution_clock; // 로컬 시간 struct local_t {}; template<class Duration> using local_time = time_point<local_t, Duration>; using local_seconds = local_time<seconds>; using local_days = local_time<days>; template<class CharT, class Traits, class Duration> basic_ostream<CharT, Traits>& operator<<(basic_ostream<CharT, Traits>& os, const local_time<Duration>& tp); template<class CharT, class Traits, class Duration, class Alloc = allocator<CharT>> basic_istream<CharT, Traits>& from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt, local_time<Duration>& tp, basic_string<CharT, Traits, Alloc>* abbrev = nullptr, minutes* offset = nullptr); // time_point 변환 template<class DestClock, class SourceClock> struct clock_time_conversion; template<class DestClock, class SourceClock, class Duration> auto clock_cast(const time_point<SourceClock, Duration>& t); // class last_spec struct last_spec; // class day class day; constexpr bool operator==(const day& x, const day& y) noexcept; constexpr strong_ordering operator<=>(const day& x, const day& y) noexcept; constexpr day operator+(const day& x, const days& y) noexcept; constexpr day operator+(const days& x, const day& y) noexcept; constexpr day operator-(const day& x, const days& y) noexcept; constexpr days operator-(const day& x, const day& y) noexcept; template<class CharT, class Traits> basic_ostream<CharT, Traits>& operator<<(basic_ostream<CharT, Traits>& os, const day& d); template<class CharT, class Traits, class Alloc = allocator<CharT>> basic_istream<CharT, Traits>& from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt, day& d, basic_string<CharT, Traits, Alloc>* abbrev = nullptr, minutes* offset = nullptr); // class month class month; constexpr bool operator==(const month& x, const month& y) noexcept; constexpr strong_ordering operator<=>(const month& x, const month& y) noexcept; constexpr month operator+(const month& x, const months& y) noexcept; constexpr month operator+(const months& x, const month& y) noexcept; constexpr month operator-(const month& x, const months& y) noexcept; constexpr months operator-(const month& x, const month& y) noexcept; template<class CharT, class Traits> basic_ostream<CharT, Traits>& operator<<(basic_ostream<CharT, Traits>& os, const month& m); template<class CharT, class Traits, class Alloc = allocator<CharT>> basic_istream<CharT, Traits>& from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt, month& m, basic_string<CharT, Traits, Alloc>* abbrev = nullptr, minutes* offset = nullptr); // class year class year; constexpr bool operator==(const year& x, const year& y) noexcept; constexpr strong_ordering operator<=>(const year& x, const year& y) noexcept; constexpr year operator+(const year& x, const years& y) noexcept; constexpr year operator+(const years& x, const year& y) noexcept; constexpr year operator-(const year& x, const years& y) noexcept; constexpr years operator-(const year& x, const year& y) noexcept; template<class CharT, class Traits> basic_ostream<CharT, Traits>& operator<<(basic_ostream<CharT, Traits>& os, const year& y); template<class CharT, class Traits, class Alloc = allocator<CharT>> basic_istream<CharT, Traits>& from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt, year& y, basic_string<CharT, Traits, Alloc>* abbrev = nullptr, minutes* offset = nullptr); // class weekday class weekday; constexpr bool operator==(const weekday& x, const weekday& y) noexcept; constexpr weekday operator+(const weekday& x, const days& y) noexcept; constexpr weekday operator+(const days& x, const weekday& y) noexcept; constexpr weekday operator-(const weekday& x, const days& y) noexcept; constexpr days operator-(const weekday& x, const weekday& y) noexcept; template<class CharT, class Traits> basic_ostream<CharT, Traits>& operator<<(basic_ostream<CharT, Traits>& os, const weekday& wd); template<class CharT, class Traits, class Alloc = allocator<CharT>> basic_istream<CharT, Traits>& from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt, weekday& wd, basic_string<CharT, Traits, Alloc>* abbrev = nullptr, minutes* offset = nullptr); // class weekday_indexed class weekday_indexed; constexpr bool operator==(const weekday_indexed& x, const weekday_indexed& y) noexcept; template<class CharT, class Traits> basic_ostream<CharT, Traits>& operator<<(basic_ostream<CharT, Traits>& os, const weekday_indexed& wdi); // class weekday_last class weekday_last; constexpr bool operator==(const weekday_last& x, const weekday_last& y) noexcept; template<class CharT, class Traits> basic_ostream<CharT, Traits>& operator<<(basic_ostream<CharT, Traits>& os, const weekday_last& wdl); // class month_day class month_day; constexpr bool operator==(const month_day& x, const month_day& y) noexcept; constexpr strong_ordering operator<=>(const month_day& x, const month_day& y) noexcept; template<class CharT, class Traits> basic_ostream<CharT, Traits>& operator<<(basic_ostream<CharT, Traits>& os, const month_day& md); template<class CharT, class Traits, class Alloc = allocator<CharT>> basic_istream<CharT, Traits>& from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt, month_day& md, basic_string<CharT, Traits, Alloc>* abbrev = nullptr, minutes* offset = nullptr); // class month_day_last class month_day_last; constexpr bool operator==(const month_day_last& x, const month_day_last& y) noexcept; constexpr strong_ordering operator<=>(const month_day_last& x, const month_day_last& y) noexcept; template<class CharT, class Traits> basic_ostream<CharT, Traits>& operator<<(basic_ostream<CharT, Traits>& os, const month_day_last& mdl); // class month_weekday class month_weekday; constexpr bool operator==(const month_weekday& x, const month_weekday& y) noexcept; template<class CharT, class Traits> basic_ostream<CharT, Traits>& operator<<(basic_ostream<CharT, Traits>& os, const month_weekday& mwd); // class month_weekday_last class month_weekday_last; constexpr bool operator==(const month_weekday_last& x, const month_weekday_last& y) noexcept; template<class CharT, class Traits> basic_ostream<CharT, Traits>& operator<<(basic_ostream<CharT, Traits>& os, const month_weekday_last& mwdl); // class year_month class year_month; constexpr bool operator==(const year_month& x, const year_month& y) noexcept; constexpr strong_ordering operator<=>(const year_month& x, const year_month& y) noexcept; constexpr year_month operator+(const year_month& ym, const months& dm) noexcept; constexpr year_month operator+(const months& dm, const year_month& ym) noexcept; constexpr year_month operator-(const year_month& ym, const months& dm) noexcept; constexpr months operator-(const year_month& x, const year_month& y) noexcept; constexpr year_month operator+(const year_month& ym, const years& dy) noexcept; constexpr year_month operator+(const years& dy, const year_month& ym) noexcept; constexpr year_month operator-(const year_month& ym, const years& dy) noexcept; template<class CharT, class Traits> basic_ostream<CharT, Traits>& operator<<(basic_ostream<CharT, Traits>& os, const year_month& ym); template<class CharT, class Traits, class Alloc = allocator<CharT>> basic_istream<CharT, Traits>& from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt, year_month& ym, basic_string<CharT, Traits, Alloc>* abbrev = nullptr, minutes* offset = nullptr); // class year_month_day class year_month_day; constexpr bool operator==(const year_month_day& x, const year_month_day& y) noexcept; constexpr strong_ordering operator<=>(const year_month_day& x, const year_month_day& y) noexcept; constexpr year_month_day operator+(const year_month_day& ymd, const months& dm) noexcept; constexpr year_month_day operator+(const months& dm, const year_month_day& ymd) noexcept; constexpr year_month_day operator+(const year_month_day& ymd, const years& dy) noexcept; constexpr year_month_day operator+(const years& dy, const year_month_day& ymd) noexcept; constexpr year_month_day operator-(const year_month_day& ymd, const months& dm) noexcept; constexpr year_month_day operator-(const year_month_day& ymd, const years& dy) noexcept; template<class CharT, class Traits> basic_ostream<CharT, Traits>& operator<<(basic_ostream<CharT, Traits>& os, const year_month_day& ymd); template<class CharT, class Traits, class Alloc = allocator<CharT>> basic_istream<CharT, Traits>& from_stream(basic_istream<CharT, Traits>& is, const CharT* fmt, year_month_day& ymd, basic_string<CharT, Traits, Alloc>* abbrev = nullptr, minutes* offset = nullptr); // class year_month_day_last class year_month_day_last; constexpr bool operator==(const year_month_day_last& x, const year_month_day_last& y) noexcept; constexpr strong_ordering operator<=>(const year_month_day_last& x, const year_month_day_last& y) noexcept; constexpr year_month_day_last operator+(const year_month_day_last& ymdl, const months& dm) noexcept; constexpr year_month_day_last operator+(const months& dm, const year_month_day_last& ymdl) noexcept; constexpr year_month_day_last operator+(const year_month_day_last& ymdl, const years& dy) noexcept; constexpr year_month_day_last operator+(const years& dy, const year_month_day_last& ymdl) noexcept; constexpr year_month_day_last operator-(const year_month_day_last& ymdl, const months& dm) noexcept; constexpr year_month_day_last operator-(const year_month_day_last& ymdl, const years& dy) noexcept; template<class CharT, class Traits> basic_ostream<CharT, Traits>& operator<<(basic_ostream<CharT, Traits>& os, const year_month_day_last& ymdl); // class year_month_weekday class year_month_weekday; constexpr bool operator==(const year_month_weekday& x, const year_month_weekday& y) noexcept; constexpr year_month_weekday operator+(const year_month_weekday& ymwd, const months& dm) noexcept; constexpr year_month_weekday operator+(const months& dm, const year_month_weekday& ymwd) noexcept; constexpr year_month_weekday operator+(const year_month_weekday& ymwd, const years& dy) noexcept; constexpr year_month_weekday operator+(const years& dy, const year_month_weekday& ymwd) noexcept; constexpr year_month_weekday operator-(const year_month_weekday& ymwd, const months& dm) noexcept; constexpr year_month_weekday operator-(const year_month_weekday& ymwd, const years& dy) noexcept; template<class CharT, class Traits> basic_ostream<CharT, Traits>& operator<<(basic_ostream<CharT, Traits>& os, const year_month_weekday& ymwdi); // class year_month_weekday_last class year_month_weekday_last; constexpr bool operator==(const year_month_weekday_last& x, const year_month_weekday_last& y) noexcept; constexpr year_month_weekday_last operator+(const year_month_weekday_last& ymwdl, const months& dm) noexcept; constexpr year_month_weekday_last operator+(const months& dm, const year_month_weekday_last& ymwdl) noexcept; constexpr year_month_weekday_last operator+(const year_month_weekday_last& ymwdl, const years& dy) noexcept; constexpr year_month_weekday_last operator+(const years& dy, const year_month_weekday_last& ymwdl) noexcept; constexpr year_month_weekday_last operator-(const year_month_weekday_last& ymwdl, const months& dm) noexcept; constexpr year_month_weekday_last operator-(const year_month_weekday_last& ymwdl, const years& dy) noexcept; template<class CharT, class Traits> basic_ostream<CharT, Traits>& operator<<(basic_ostream<CharT, Traits>& os, const year_month_weekday_last& ymwdl); // civil calendar conventional syntax operators constexpr year_month operator/(const year& y, const month& m) noexcept; constexpr year_month operator/(const year& y, int m) noexcept; constexpr month_day operator/(const month& m, const day& d) noexcept; constexpr month_day operator/(const month& m, int d) noexcept; constexpr month_day operator/(int m, const day& d) noexcept; constexpr month_day operator/(const day& d, const month& m) noexcept; constexpr month_day operator/(const day& d, int m) noexcept; constexpr month_day_last operator/(const month& m, last_spec) noexcept; constexpr month_day_last operator/(int m, last_spec) noexcept; constexpr month_day_last operator/(last_spec, const month& m) noexcept; constexpr month_day_last operator/(last_spec, int m) noexcept; constexpr month_weekday operator/(const month& m, const weekday_indexed& wdi) noexcept; constexpr month_weekday operator/(int m, const weekday_indexed& wdi) noexcept; constexpr month_weekday operator/(const weekday_indexed& wdi, const month& m) noexcept; constexpr month_weekday operator/(const weekday_indexed& wdi, int m) noexcept; constexpr month_weekday_last operator/(const month& m, const weekday_last& wdl) noexcept; constexpr month_weekday_last operator/(int m, const weekday_last& wdl) noexcept; constexpr month_weekday_last operator/(const weekday_last& wdl, const month& m) noexcept; constexpr month_weekday_last operator/(const weekday_last& wdl, int m) noexcept; constexpr year_month_day operator/(const year_month& ym, const day& d) noexcept; constexpr year_month_day operator/(const year_month& ym, int d) noexcept; constexpr year_month_day operator/(const year& y, const month_day& md) noexcept; constexpr year_month_day operator/(int y, const month_day& md) noexcept; constexpr year_month_day operator/(const month_day& md, const year& y) noexcept; constexpr year_month_day operator/(const month_day& md, int y) noexcept; constexpr year_month_day_last operator/(const year_month& ym, last_spec) noexcept; constexpr year_month_day_last operator/(const year& y, const month_day_last& mdl) noexcept; constexpr year_month_day_last operator/(int y, const month_day_last& mdl) noexcept; constexpr year_month_day_last operator/(const month_day_last& mdl, const year& y) noexcept; constexpr year_month_day_last operator/(const month_day_last& mdl, int y) noexcept; constexpr year_month_weekday operator/(const year_month& ym, const weekday_indexed& wdi) noexcept; constexpr year_month_weekday operator/(const year& y, const month_weekday& mwd) noexcept; constexpr year_month_weekday operator/(int y, const month_weekday& mwd) noexcept; constexpr year_month_weekday operator/(const month_weekday& mwd, const year& y) noexcept; constexpr year_month_weekday operator/(const month_weekday& mwd, int y) noexcept; constexpr year_month_weekday_last operator/(const year_month& ym, const weekday_last& wdl) noexcept; constexpr year_month_weekday_last operator/(const year& y, const month_weekday_last& mwdl) noexcept; constexpr year_month_weekday_last operator/(int y, const month_weekday_last& mwdl) noexcept; constexpr year_month_weekday_last operator/(const month_weekday_last& mwdl, const year& y) noexcept; constexpr year_month_weekday_last operator/(const month_weekday_last& mwdl, int y) noexcept; // class template hh_mm_ss template<class Duration> class hh_mm_ss; template<class CharT, class Traits, class Duration> basic_ostream<CharT, Traits>& operator<<(basic_ostream<CharT, Traits>& os, const hh_mm_ss<Duration>& hms); // 12/24 시간 함수 constexpr bool is_am(const hours& h) noexcept; constexpr bool is_pm(const hours& h) noexcept; constexpr hours make12(const hours& h) noexcept; constexpr hours make24(const hours& h, bool is_pm) noexcept; // time zone database struct tzdb; class tzdb_list; // 타임존 데이터베이스 접근 const tzdb& get_tzdb(); tzdb_list& get_tzdb_list(); const time_zone* locate_zone(string_view tz_name); const time_zone* current_zone(); // 원격 시간대 데이터베이스 지원 const tzdb& reload_tzdb(); string remote_version(); // exception classes class nonexistent_local_time; class ambiguous_local_time; // information classes struct sys_info; template<class CharT, class Traits> basic_ostream<CharT, Traits>& operator<<(basic_ostream<CharT, Traits>& os, const sys_info& si); struct local_info; template<class CharT, class Traits> basic_ostream<CharT, Traits>& operator<<(basic_ostream<CharT, Traits>& os, const local_info& li); // class time_zone enum class choose {earliest, latest}; class time_zone; bool operator==(const time_zone& x, const time_zone& y) noexcept; strong_ordering operator<=>(const time_zone& x, const time_zone& y) noexcept; // 클래스 템플릿 zoned_traits template<class T> struct zoned_traits; // 클래스 템플릿 zoned_time template<class Duration, class TimeZonePtr = const time_zone*> class zoned_time; using zoned_seconds = zoned_time<seconds>; template<class Duration1, class Duration2, class TimeZonePtr> bool operator==(const zoned_time<Duration1, TimeZonePtr>& x, const zoned_time<Duration2, TimeZonePtr>& y); template<class CharT, class Traits, class Duration, class TimeZonePtr> basic_ostream<CharT, Traits>& operator<<(basic_ostream<CharT, Traits>& os, const zoned_time<Duration, TimeZonePtr>& t); // 윤초 지원 class leap_second; bool operator==(const leap_second& x, const leap_second& y); strong_ordering operator<=>(const leap_second& x, const leap_second& y); template<class Duration> constexpr bool operator==(const leap_second& x, const sys_time<Duration>& y); template<class Duration> constexpr bool operator< (const leap_second& x, const sys_time<Duration>& y); template<class Duration> constexpr bool operator< (const sys_time<Duration>& x, const leap_second& y); template<class Duration> constexpr bool operator> (const leap_second& x, const sys_time<Duration>& y); template<class Duration> constexpr bool operator> (const sys_time<Duration>& x, const leap_second& y); template<class Duration> constexpr bool operator<=(const leap_second& x, const sys_time<Duration>& y); template<class Duration> constexpr bool operator<=(const sys_time<Duration>& x, const leap_second& y); template<class Duration> constexpr bool operator>=(const leap_second& x, const sys_time<Duration>& y); template<class Duration> constexpr bool operator>=(const sys_time<Duration>& x, const leap_second& y); template<class Duration> requires three_way_comparable_with<sys_seconds, sys_time<Duration>> constexpr auto operator<=>(const leap_second& x, const sys_time<Duration>& y); // class time_zone_link class time_zone_link; bool operator==(const time_zone_link& x, const time_zone_link& y); strong_ordering operator<=>(const time_zone_link& x, const time_zone_link& y); // 포맷팅 template<class Duration> struct /*local-time-format-t*/; // 설명 전용 template<class Duration> /*local-time-format-t*/<Duration> local_time_format(local_time<Duration> time, const string* abbrev = nullptr, const seconds* offset_sec = nullptr); } template<class Rep, class Period, class CharT> struct formatter<chrono::duration<Rep, Period>, CharT>; template<class Duration, class CharT> struct formatter<chrono::sys_time<Duration>, CharT>; template<class Duration, class CharT> struct formatter<chrono::utc_time<Duration>, CharT>; template<class Duration, class CharT> struct formatter<chrono::tai_time<Duration>, CharT>; template<class Duration, class CharT> struct formatter<chrono::gps_time<Duration>, CharT>; template<class Duration, class CharT> struct formatter<chrono::file_time<Duration>, CharT>; template<class Duration, class CharT> struct formatter<chrono::local_time<Duration>, CharT>; template<class Duration, class CharT> struct formatter<chrono::/*local-time-format-t*/<Duration>, CharT>; template<class CharT> struct formatter<chrono::day, CharT>; template<class CharT> struct formatter<chrono::month, CharT>; template<class CharT> struct formatter<chrono::year, CharT>; template<class CharT> struct formatter<chrono::weekday, CharT>; template<class CharT> struct formatter<chrono::weekday_indexed, CharT>; template<class CharT> struct formatter<chrono::weekday_last, CharT>; template<class CharT> struct formatter<chrono::month_day, CharT>; template<class CharT> struct formatter<chrono::month_day_last, CharT>; template<class CharT> struct formatter<chrono::month_weekday, CharT>; template<class CharT> struct formatter<chrono::month_weekday_last, CharT>; template<class CharT> struct formatter<chrono::year_month, CharT>; template<class CharT> struct formatter<chrono::year_month_day, CharT>; template<class CharT> struct formatter<chrono::year_month_day_last, CharT>; template<class CharT> struct formatter<chrono::year_month_weekday, CharT>; template<class CharT> struct formatter<chrono::year_month_weekday_last, CharT>; template<class Rep, class Period, class CharT> struct formatter<chrono::hh_mm_ss<duration<Rep, Period>>, CharT>; template<class CharT> struct formatter<chrono::sys_info, CharT>; template<class CharT> struct formatter<chrono::local_info, CharT>; template<class Duration, class TimeZonePtr, class CharT> struct formatter<chrono::zoned_time<Duration, TimeZonePtr>, CharT>; namespace chrono { // 파싱 template<class CharT, class Parsable> /* 미지정 */ parse(const CharT* fmt, Parsable& tp); template<class CharT, class Traits, class Alloc, class Parsable> /* 미지정 */ parse(const basic_string<CharT, Traits, Alloc>& format, Parsable& tp); template<class CharT, class traits, class Alloc, class Parsable> /* 미지정 */ parse(const CharT* fmt, Parsable& tp, basic_string<CharT, traits, Alloc>& abbrev); template<class CharT, class Traits, class Alloc, class Parsable> /* 지정되지 않음 */ parse(const basic_string<CharT, Traits, Alloc>& format, Parsable& tp, basic_string<CharT, Traits, Alloc>& abbrev); template<class CharT, class Parsable> /* 지정되지 않음 */ parse(const CharT* fmt, Parsable& tp, minutes& offset); template<class CharT, class Traits, class Alloc, class Parsable> /* 지정되지 않음 */ parse(const basic_string<CharT, Traits, Alloc>& format, Parsable& tp, minutes& offset); template<class CharT, class traits, class Alloc, class Parsable> /* 지정되지 않음 */ parse(const CharT* fmt, Parsable& tp, basic_string<CharT, traits, Alloc>& abbrev, minutes& offset); template<class CharT, class Traits, class Alloc, class Parsable> /* 미지정 */ parse(const basic_string<CharT, Traits, Alloc>& format, Parsable& tp, basic_string<CharT, Traits, Alloc>& abbrev, minutes& offset); // 달력 관련 상수 inline constexpr last_spec last{}; inline constexpr weekday Sunday{0}; inline constexpr weekday Monday{1}; inline constexpr weekday Tuesday{2}; inline constexpr weekday Wednesday{3}; inline constexpr weekday Thursday{4}; inline constexpr weekday Friday{5}; inline constexpr weekday Saturday{6}; inline constexpr month January{1}; inline constexpr month February{2}; inline constexpr month March{3}; inline constexpr month April{4}; inline constexpr month May{5}; inline constexpr month June{6}; inline constexpr month July{7}; inline constexpr month August{8}; inline constexpr month September{9}; inline constexpr month October{10}; inline constexpr month November{11}; inline constexpr month December{12}; } inline namespace literals { inline namespace chrono_literals { // duration 리터럴 접미사 constexpr chrono::시간 operator""h(unsigned long long); constexpr chrono::duration</* 미지정 */, ratio<3600, 1>> operator""h(long double); constexpr chrono::분 operator""min(unsigned long long); constexpr chrono::duration</* 미지정 */, ratio<60, 1>> operator""min(long double); constexpr chrono::초 operator""s(unsigned long long); constexpr chrono::duration</* 미지정 */> operator""s(long double); constexpr chrono::밀리초 operator""ms(unsigned long long); constexpr chrono::duration</* 지정되지 않음 */, milli> operator""ms(long double); constexpr chrono::마이크로초 operator""us(unsigned long long); constexpr chrono::duration</* 미지정 */, micro> operator""us(long double); constexpr chrono::나노초 operator""ns(unsigned long long); constexpr chrono::duration</* 지정되지 않음 */, nano> operator""ns(long double); // non-member functions constexpr chrono::day operator""d(unsigned long long d) noexcept; // non-member functions constexpr chrono::year operator""y(unsigned long long y) noexcept; } } namespace chrono { using namespace literals::chrono_literals; } // 해시 지원 template<class T> struct hash; template<class Rep, class Period> struct hash<chrono::duration<Rep, Period>>; template<class Clock, class Duration> struct hash<chrono::time_point<Clock, Duration>>; template<> struct hash<chrono::day>; template<> struct hash<chrono::month>; template<> struct hash<chrono::year>; template<> struct hash<chrono::weekday>; template<> struct hash<chrono::weekday_indexed>; template<> struct hash<chrono::weekday_last>; template<> struct hash<chrono::month_day>; template<> struct hash<chrono::month_day_last>; template<> struct hash<chrono::month_weekday>; template<> struct hash<chrono::month_weekday_last>; template<> struct hash<chrono::year_month>; template<> struct hash<chrono::year_month_day>; template<> struct hash<chrono::year_month_day_last>; template<> struct hash<chrono::year_month_weekday>; template<> struct hash<chrono::year_month_weekday_last>; template<class Duration, class TimeZonePtr> struct hash<chrono::zoned_time<Duration, TimeZonePtr>>; template<> struct hash<chrono::leap_second>; }
클래스 템플릿 std::chrono::duration
namespace std::chrono { template<class Rep, class Period = ratio<1>> class duration { public: using rep = Rep; using period = typename Period::type; private: rep rep_; // 설명용으로만 사용 public: // 생성/복사/소멸 constexpr duration() = default; template<class Rep2> constexpr explicit duration(const Rep2& r); template<class Rep2, class Period2> constexpr duration(const duration<Rep2, Period2>& d); ~duration() = default; duration(const duration&) = default; duration& operator=(const duration&) = default; // 관찰자 constexpr rep count() const; // 연산 constexpr common_type_t<duration> operator+() const; constexpr common_type_t<duration> operator-() const; constexpr duration& operator++(); constexpr duration operator++(int); constexpr duration& operator--(); constexpr duration operator--(int); constexpr duration& operator+=(const duration& d); constexpr duration& operator-=(const duration& d); constexpr duration& operator*=(const rep& rhs); constexpr duration& operator/=(const rep& rhs); constexpr duration& operator%=(const rep& rhs); constexpr duration& operator%=(const duration& rhs); // 특수 값 static constexpr duration zero() noexcept; static constexpr duration min() noexcept; static constexpr duration max() noexcept; }; }
클래스 템플릿 std::chrono::time_point
namespace std::chrono { template<class Clock, class Duration = typename Clock::duration> class time_point { public: using clock = Clock; using duration = Duration; using rep = typename duration::rep; using period = typename duration::period; private: duration d_; // 설명용으로만 사용 public: // 생성자 constexpr time_point(); // epoch 값을 가짐 constexpr explicit time_point(const duration& d); // time_point() + d와 동일 template<class Duration2> constexpr time_point(const time_point<clock, Duration2>& t); // 관찰자 constexpr duration time_since_epoch() const; // 연산 constexpr time_point& operator++(); constexpr time_point operator++(int); constexpr time_point& operator--(); constexpr time_point operator--(int); constexpr time_point& operator+=(const duration& d); constexpr time_point& operator-=(const duration& d); // 특수 값 static constexpr time_point min() noexcept; static constexpr time_point max() noexcept; }; }
클래스 템플릿 std::common_type 의 std::chrono::duration 전문화
namespace std { template<class Rep1, class Period1, class Rep2, class Period2> struct common_type<chrono::duration<Rep1, Period1>, chrono::duration<Rep2, Period2>> { using type = chrono::duration<common_type_t<Rep1, Rep2>, /* 설명 참조 */>; }; }
클래스 템플릿 std::common_type 의 std::chrono::time_point 특수화
namespace std { template<class Clock, class Duration1, class Duration2> struct common_type<chrono::time_point<Clock, Duration1>, chrono::time_point<Clock, Duration2>> { using type = chrono::time_point<Clock, common_type_t<Duration1, Duration2>>; }; }
클래스 템플릿 std::chrono::treat_as_floating_point
template<class Rep> struct treat_as_floating_point : is_floating_point<Rep> { };
클래스 템플릿 std::chrono::duration_values
namespace std::chrono { template<class Rep> struct duration_values { public: static constexpr Rep zero() noexcept; static constexpr Rep min() noexcept; static constexpr Rep max() noexcept; }; }
클래스 std::chrono::system_clock
namespace std::chrono { class system_clock { public: using rep = /* 설명 참조 */; using period = ratio</* 지정되지 않음 */, /* 지정되지 않음 */>; using duration = chrono::duration<rep, period>; using time_point = chrono::time_point<system_clock>; static constexpr bool is_steady = /* 지정되지 않음 */; static time_point now() noexcept; // C 타입 time_t와의 상호 변환 static time_t to_time_t (const time_point& t) noexcept; static time_point from_time_t(time_t t) noexcept; }; }
클래스 std:: chrono :: utc_clock
namespace std::chrono { class utc_clock { public: using rep = /* 부호 있는 산술 타입 */; using period = ratio</* 지정되지 않음 */, /* 지정되지 않음 */>; using duration = chrono::duration<rep, period>; using time_point = chrono::time_point<utc_clock>; static constexpr bool is_steady = /* 지정되지 않음 */; static time_point now(); template<class Duration> static sys_time<common_type_t<Duration, seconds>> to_sys(const utc_time<Duration>& t); template<class Duration> static utc_time<common_type_t<Duration, seconds>> from_sys(const sys_time<Duration>& t); }; }
클래스 std:: chrono :: tai_clock
namespace std::chrono { class tai_clock { public: using rep = /* 부호 있는 산술 타입 */; using period = ratio</* 지정되지 않음 */, /* 지정되지 않음 */>; using duration = chrono::duration<rep, period>; using time_point = chrono::time_point<tai_clock>; static constexpr bool is_steady = /* 지정되지 않음 */; static time_point now(); template<class Duration> static sys_time<common_type_t<Duration, seconds>> to_sys(const tai_time<Duration>& t); template<class Duration> static tai_time<common_type_t<Duration, seconds>> from_sys(const sys_time<Duration>& t); }; }
클래스 std:: chrono :: gps_clock
namespace std::chrono { class gps_clock { public: using rep = /* 부호 있는 산술 타입 */; using period = ratio</* 지정되지 않음 */, /* 지정되지 않음 */>; using duration = chrono::duration<rep, period>; using time_point = chrono::time_point<gps_clock>; static constexpr bool is_steady = /* 지정되지 않음 */; static time_point now(); template<class Duration> static sys_time<common_type_t<Duration, seconds>> to_sys(const gps_time<Duration>& t); template<class Duration> static gps_time<common_type_t<Duration, seconds>> from_sys(const sys_time<Duration>& t); }; }
클래스 std::chrono::steady_clock
namespace std::chrono { class steady_clock { public: using rep = /* 지정되지 않음 */; using period = ratio</* 지정되지 않음 */, /* 지정되지 않음 */>; using duration = chrono::duration<rep, period>; using time_point = chrono::time_point</* 지정되지 않음 */, duration>; static constexpr bool is_steady = true; static time_point now() noexcept; }; }
클래스 std::chrono::high_resolution_clock
namespace std::chrono { class high_resolution_clock { public: using rep = /* 지정되지 않음 */; using period = ratio</* 지정되지 않음 */, /* 지정되지 않음 */>; using duration = chrono::duration<rep, period>; using time_point = chrono::time_point</* 지정되지 않음 */, duration>; static constexpr bool is_steady = /* 지정되지 않음 */; static time_point now() noexcept; }; }
클래스 템플릿 std:: chrono :: clock_time_conversion
namespace std::chrono { template<class DestClock, class SourceClock> struct clock_time_conversion {}; template<class Clock> struct clock_time_conversion<Clock, Clock> { template<class Duration> time_point<Clock, Duration> operator()(const time_point<Clock, Duration>& t) const; }; template<> struct clock_time_conversion<system_clock, system_clock> { template<class Duration> sys_time<Duration> operator()(const sys_time<Duration>& t) const; }; template<> struct clock_time_conversion<utc_clock, utc_clock> { template<class Duration> utc_time<Duration> operator()(const utc_time<Duration>& t) const; }; template<> struct clock_time_conversion<utc_clock, system_clock> { template<class Duration> utc_time<common_type_t<Duration, seconds>> operator()(const sys_time<Duration>& t) const; }; template<> struct clock_time_conversion<system_clock, utc_clock> { template<class Duration> sys_time<common_type_t<Duration, seconds>> operator()(const utc_time<Duration>& t) const; }; template<class SourceClock> struct clock_time_conversion<system_clock, SourceClock> { template<class Duration> auto operator()(const time_point<SourceClock, Duration>& t) const -> decltype(SourceClock::to_sys(t)); }; template<class DestClock> struct clock_time_conversion<DestClock, system_clock> { template<class Duration> auto operator()(const sys_time<Duration>& t) const -> decltype(DestClock::from_sys(t)); }; template<class SourceClock> struct clock_time_conversion<utc_clock, SourceClock> { template<class Duration> auto operator()(const time_point<SourceClock, Duration>& t) const -> decltype(SourceClock::to_utc(t)); }; template<class DestClock> struct clock_time_conversion<DestClock, utc_clock> { template<class Duration> auto operator()(const utc_time<Duration>& t) const -> decltype(DestClock::from_utc(t)); }; }
클래스 std:: chrono :: last_spec
namespace std::chrono { struct last_spec { explicit last_spec() = default; }; }
클래스 std:: chrono :: day
namespace std::chrono { class day { unsigned char d_; // 설명 전용 public: day() = default; constexpr explicit day(unsigned d) noexcept; constexpr day& operator++() noexcept; constexpr day operator++(int) noexcept; constexpr day& operator--() noexcept; constexpr day operator--(int) noexcept; constexpr day& operator+=(const days& d) noexcept; constexpr day& operator-=(const days& d) noexcept; constexpr explicit operator unsigned() const noexcept; constexpr bool ok() const noexcept; }; }
클래스 std:: chrono :: month
namespace std::chrono { class month { unsigned char m_; // 설명 전용 public: month() = default; constexpr explicit month(unsigned m) noexcept; constexpr month& operator++() noexcept; constexpr month operator++(int) noexcept; constexpr month& operator--() noexcept; constexpr month operator--(int) noexcept; constexpr month& operator+=(const months& m) noexcept; constexpr month& operator-=(const months& m) noexcept; constexpr explicit operator unsigned() const noexcept; constexpr bool ok() const noexcept; }; }
클래스 std:: chrono :: year
namespace std::chrono { class year { short y_; // 설명용으로만 사용 public: year() = default; constexpr explicit year(int y) noexcept; constexpr year& operator++() noexcept; constexpr year operator++(int) noexcept; constexpr year& operator--() noexcept; constexpr year operator--(int) noexcept; constexpr year& operator+=(const years& y) noexcept; constexpr year& operator-=(const years& y) noexcept; constexpr year operator+() const noexcept; constexpr year operator-() const noexcept; constexpr bool is_leap() const noexcept; constexpr explicit operator int() const noexcept; constexpr bool ok() const noexcept; static constexpr year min() noexcept; static constexpr year max() noexcept; }; }
클래스 std:: chrono :: weekday
namespace std::chrono { class weekday { unsigned char wd_; // 설명용 전용 public: weekday() = default; constexpr explicit weekday(unsigned wd) noexcept; constexpr weekday(const sys_days& dp) noexcept; constexpr explicit weekday(const local_days& dp) noexcept; constexpr weekday& operator++() noexcept; constexpr weekday operator++(int) noexcept; constexpr weekday& operator--() noexcept; constexpr weekday operator--(int) noexcept; constexpr weekday& operator+=(const days& d) noexcept; constexpr weekday& operator-=(const days& d) noexcept; constexpr unsigned c_encoding() const noexcept; constexpr unsigned iso_encoding() const noexcept; constexpr bool ok() const noexcept; constexpr weekday_indexed operator[](unsigned index) const noexcept; constexpr weekday_last operator[](last_spec) const noexcept; }; }
클래스 std:: chrono :: weekday_indexed
namespace std::chrono { class weekday_indexed { chrono::weekday wd_; // 설명용 전용 unsigned char index_; // 설명용 전용 public: weekday_indexed() = default; constexpr weekday_indexed(const chrono::weekday& wd, unsigned index) noexcept; constexpr chrono::weekday weekday() const noexcept; constexpr unsigned index() const noexcept; constexpr bool ok() const noexcept; }; }
클래스 std:: chrono :: weekday_last
namespace std::chrono { class weekday_last { chrono::weekday wd_; // 설명용 public: constexpr explicit weekday_last(const chrono::weekday& wd) noexcept; constexpr chrono::weekday weekday() const noexcept; constexpr bool ok() const noexcept; }; }
클래스 std:: chrono :: month_day
namespace std::chrono { class month_day { chrono::month m_; // 설명 전용 chrono::day d_; // 설명 전용 public: month_day() = default; constexpr month_day(const chrono::month& m, const chrono::day& d) noexcept; constexpr chrono::month month() const noexcept; constexpr chrono::day day() const noexcept; constexpr bool ok() const noexcept; }; }
클래스 std:: chrono :: month_day_last
namespace std::chrono { class month_day_last { chrono::month m_; // 설명용 전용 public: constexpr explicit month_day_last(const chrono::month& m) noexcept; constexpr chrono::month month() const noexcept; constexpr bool ok() const noexcept; }; }
클래스 std:: chrono :: month_weekday
namespace std::chrono { class month_weekday { chrono::month m_; // 설명 전용 chrono::weekday_indexed wdi_; // 설명 전용 public: constexpr month_weekday(const chrono::month& m, const chrono::weekday_indexed& wdi) noexcept; constexpr chrono::month month() const noexcept; constexpr chrono::weekday_indexed weekday_indexed() const noexcept; constexpr bool ok() const noexcept; }; }
클래스 std:: chrono :: month_weekday_last
namespace std::chrono { class month_weekday_last { chrono::month m_; // 설명용 전용 chrono::weekday_last wdl_; // 설명용 전용 public: constexpr month_weekday_last(const chrono::month& m, const chrono::weekday_last& wdl) noexcept; constexpr chrono::month month() const noexcept; constexpr chrono::weekday_last weekday_last() const noexcept; constexpr bool ok() const noexcept; }; }
클래스 std:: chrono :: year_month
namespace std::chrono { class year_month { chrono::year y_; // 설명용 전용 chrono::month m_; // 설명용 전용 public: year_month() = default; constexpr year_month(const chrono::year& y, const chrono::month& m) noexcept; constexpr chrono::year year() const noexcept; constexpr chrono::month month() const noexcept; constexpr year_month& operator+=(const months& dm) noexcept; constexpr year_month& operator-=(const months& dm) noexcept; constexpr year_month& operator+=(const years& dy) noexcept; constexpr year_month& operator-=(const years& dy) noexcept; constexpr bool ok() const noexcept; }; }
클래스 std:: chrono :: year_month_day
namespace std::chrono { class year_month_day { chrono::year y_; // 설명용 전용 chrono::month m_; // 설명용 전용 chrono::day d_; // 설명용 전용 public: year_month_day() = default; constexpr year_month_day(const chrono::year& y, const chrono::month& m, const chrono::day& d) noexcept; constexpr year_month_day(const year_month_day_last& ymdl) noexcept; constexpr year_month_day(const sys_days& dp) noexcept; constexpr explicit year_month_day(const local_days& dp) noexcept; constexpr year_month_day& operator+=(const months& m) noexcept; constexpr year_month_day& operator-=(const months& m) noexcept; constexpr year_month_day& operator+=(const years& y) noexcept; constexpr year_month_day& operator-=(const years& y) noexcept; constexpr chrono::year year() const noexcept; constexpr chrono::month month() const noexcept; constexpr chrono::day day() const noexcept; constexpr operator sys_days() const noexcept; constexpr explicit operator local_days() const noexcept; constexpr bool ok() const noexcept; }; }
클래스 std:: chrono :: year_month_day_last
namespace std::chrono { class year_month_day_last { chrono::year y_; // 설명용 전용 chrono::month_day_last mdl_; // 설명용 전용 public: constexpr year_month_day_last(const chrono::year& y, const chrono::month_day_last& mdl) noexcept; constexpr year_month_day_last& operator+=(const months& m) noexcept; constexpr year_month_day_last& operator-=(const months& m) noexcept; constexpr year_month_day_last& operator+=(const years& y) noexcept; constexpr year_month_day_last& operator-=(const years& y) noexcept; constexpr chrono::year year() const noexcept; constexpr chrono::month month() const noexcept; constexpr chrono::month_day_last month_day_last() const noexcept; constexpr chrono::day day() const noexcept; constexpr operator sys_days() const noexcept; constexpr explicit operator local_days() const noexcept; constexpr bool ok() const noexcept; }; }
클래스 std:: chrono :: year_month_weekday
namespace std::chrono { class year_month_weekday { chrono::year y_; // 설명용 전용 chrono::month m_; // 설명용 전용 chrono::weekday_indexed wdi_; // 설명용 전용 public: year_month_weekday() = default; constexpr year_month_weekday(const chrono::year& y, const chrono::month& m, const chrono::weekday_indexed& wdi) noexcept; constexpr year_month_weekday(const sys_days& dp) noexcept; constexpr explicit year_month_weekday(const local_days& dp) noexcept; constexpr year_month_weekday& operator+=(const months& m) noexcept; constexpr year_month_weekday& operator-=(const months& m) noexcept; constexpr year_month_weekday& operator+=(const years& y) noexcept; constexpr year_month_weekday& operator-=(const years& y) noexcept; constexpr chrono::year year() const noexcept; constexpr chrono::month month() const noexcept; constexpr chrono::weekday weekday() const noexcept; constexpr unsigned index() const noexcept; constexpr chrono::weekday_indexed weekday_indexed() const noexcept; constexpr operator sys_days() const noexcept; constexpr explicit operator local_days() const noexcept; constexpr bool ok() const noexcept; }; }
클래스 std:: chrono :: year_month_weekday_last
namespace std::chrono { class year_month_weekday_last { chrono::year y_; // 설명용 전용 chrono::month m_; // 설명용 전용 chrono::weekday_last wdl_; // 설명용 전용 public: constexpr year_month_weekday_last(const chrono::year& y, const chrono::month& m, const chrono::weekday_last& wdl) noexcept; constexpr year_month_weekday_last& operator+=(const months& m) noexcept; constexpr year_month_weekday_last& operator-=(const months& m) noexcept; constexpr year_month_weekday_last& operator+=(const years& y) noexcept; constexpr year_month_weekday_last& operator-=(const years& y) noexcept; constexpr chrono::year year() const noexcept; constexpr chrono::month month() const noexcept; constexpr chrono::weekday weekday() const noexcept; constexpr chrono::weekday_last weekday_last() const noexcept; constexpr operator sys_days() const noexcept; constexpr explicit operator local_days() const noexcept; constexpr bool ok() const noexcept; }; }
클래스 템플릿 std::chrono::hh_mm_ss
namespace std::chrono { template<class Duration> class hh_mm_ss { public: static constexpr unsigned fractional_width = /* 설명 참조 */; using precision = /* 설명 참조 */; constexpr hh_mm_ss() noexcept : hh_mm_ss{Duration::zero()} {} constexpr explicit hh_mm_ss(Duration d); constexpr bool is_negative() const noexcept; constexpr chrono::hours hours() const noexcept; constexpr chrono::minutes minutes() const noexcept; constexpr chrono::seconds seconds() const noexcept; constexpr precision subseconds() const noexcept; constexpr explicit operator precision() const noexcept; constexpr precision to_duration() const noexcept; private: bool is_neg; // 설명 전용 chrono::hours h; // 설명 전용 chrono::minutes m; // 설명 전용 chrono::seconds s; // 설명 전용 precision ss; // 설명 전용 }; }
클래스 std:: chrono :: tzdb
namespace std::chrono { struct tzdb { string version; vector<time_zone> zones; vector<time_zone_link> links; vector<leap_second> leap_seconds; const time_zone* locate_zone(string_view tz_name) const; const time_zone* current_zone() const; }; }
클래스 std:: chrono :: tzdb_list
namespace std::chrono { class tzdb_list { public: tzdb_list(const tzdb_list&) = delete; tzdb_list& operator=(const tzdb_list&) = delete; // 명시되지 않은 추가 생성자들 class const_iterator; const tzdb& front() const noexcept; const_iterator erase_after(const_iterator p); const_iterator begin() const noexcept; const_iterator end() const noexcept; const_iterator cbegin() const noexcept; const_iterator cend() const noexcept; }; }
클래스 std:: chrono :: nonexistent_local_time
namespace std::chrono { class nonexistent_local_time : public runtime_error { public: template<class Duration> nonexistent_local_time(const local_time<Duration>& tp, const local_info& i); }; }
클래스 std:: chrono :: ambiguous_local_time
namespace std::chrono { class ambiguous_local_time : public runtime_error { public: template<class Duration> ambiguous_local_time(const local_time<Duration>& tp, const local_info& i); }; }
클래스 std:: chrono :: sys_info
namespace std::chrono { struct sys_info { sys_seconds begin; sys_seconds end; seconds offset; minutes save; string abbrev; }; }
클래스 std:: chrono :: local_info
namespace std::chrono { struct local_info { static constexpr int unique = 0; static constexpr int nonexistent = 1; static constexpr int ambiguous = 2; int result; sys_info first; sys_info second; }; }
클래스 std:: chrono :: time_zone
namespace std::chrono { class time_zone { public: time_zone(time_zone&&) = default; time_zone& operator=(time_zone&&) = default; // 명시되지 않은 추가 생성자들 string_view name() const noexcept; template<class Duration> sys_info get_info(const sys_time<Duration>& st) const; template<class Duration> local_info get_info(const local_time<Duration>& tp) const; template<class Duration> sys_time<common_type_t<Duration, seconds>> to_sys(const local_time<Duration>& tp) const; template<class Duration> sys_time<common_type_t<Duration, seconds>> to_sys(const local_time<Duration>& tp, choose z) const; template<class Duration> local_time<common_type_t<Duration, seconds>> to_local(const sys_time<Duration>& tp) const; }; }
클래스 템플릿 std:: chrono :: zoned_traits
namespace std::chrono { template<class T> struct zoned_traits {}; template<> struct zoned_traits<const time_zone*> { static const time_zone* default_zone(); static const time_zone* locate_zone(string_view name); }; }
클래스 템플릿 std:: chrono :: zoned_time
namespace std::chrono { template<class Duration, class TimeZonePtr = const time_zone*> class zoned_time { public: using duration = common_type_t<Duration, seconds>; private: TimeZonePtr zone_; // 설명 전용 sys_time<duration> tp_; // 설명 전용 using traits = zoned_traits<TimeZonePtr>; // 설명 전용 public: zoned_time(); zoned_time(const zoned_time&) = default; zoned_time& operator=(const zoned_time&) = default; zoned_time(const sys_time<Duration>& st); explicit zoned_time(TimeZonePtr z); explicit zoned_time(string_view name); template<class Duration2> zoned_time(const zoned_time<Duration2, TimeZonePtr>& zt); zoned_time(TimeZonePtr z, const sys_time<Duration>& st); zoned_time(string_view name, const sys_time<Duration>& st); zoned_time(TimeZonePtr z, const local_time<Duration>& tp); zoned_time(string_view name, const local_time<Duration>& tp); zoned_time(TimeZonePtr z, const local_time<Duration>& tp, choose c); zoned_time(string_view name, const local_time<Duration>& tp, choose c); template<class Duration2, class TimeZonePtr2> zoned_time(TimeZonePtr z, const zoned_time<Duration2, TimeZonePtr2>& zt); template<class Duration2, class TimeZonePtr2> zoned_time(TimeZonePtr z, const zoned_time<Duration2, TimeZonePtr2>& zt, choose); template<class Duration2, class TimeZonePtr2> zoned_time(string_view name, const zoned_time<Duration2, TimeZonePtr2>& zt); template<class Duration2, class TimeZonePtr2> zoned_time(string_view name, const zoned_time<Duration2, TimeZonePtr2>& zt, choose); zoned_time& operator=(const sys_time<Duration>& st); zoned_time& operator=(const local_time<Duration>& ut); operator sys_time<duration>() const; explicit operator local_time<duration>() const; TimeZonePtr get_time_zone() const; local_time<duration> get_local_time() const; sys_time<duration> get_sys_time() const; sys_info get_info() const; }; zoned_time() -> zoned_time<seconds>; template<class Duration> zoned_time(sys_time<Duration>) -> zoned_time<common_type_t<Duration, seconds>>; template<class TimeZonePtrOrName> using /*시간대-표현*/ = // 설명 전용 conditional_t<is_convertible_v<TimeZonePtrOrName, string_view>, const time_zone*, remove_cvref_t<TimeZonePtrOrName>>; template<class TimeZonePtrOrName> zoned_time(TimeZonePtrOrName&&) -> zoned_time<seconds, /*시간대-표현*/<TimeZonePtrOrName>>; template<class TimeZonePtrOrName, class Duration> zoned_time(TimeZonePtrOrName&&, sys_time<Duration>) -> zoned_time<common_type_t<Duration, seconds>, /*시간대-표현*/<TimeZonePtrOrName>>; template<class TimeZonePtrOrName, class Duration> zoned_time(TimeZonePtrOrName&&, local_time<Duration>, choose = choose::가장 빠른) -> zoned_time<common_type_t<Duration, seconds>, /*시간대-표현*/<TimeZonePtrOrName>>; template<class Duration, class TimeZonePtrOrName, class TimeZonePtr2> zoned_time(TimeZonePtrOrName&&, zoned_time<Duration, TimeZonePtr2>, choose = choose::가장 빠른) -> zoned_time<common_type_t<Duration, seconds>, /*시간대-표현*/<TimeZonePtrOrName>>; }
클래스 std::chrono::leap_second
namespace std::chrono { class leap_second { public: leap_second(const leap_second&) = default; leap_second& operator=(const leap_second&) = default; // 지정되지 않은 추가 생성자들 constexpr sys_seconds date() const noexcept; constexpr seconds value() const noexcept; }; }
클래스 std::chrono::time_zone_link
namespace std::chrono { class time_zone_link { public: time_zone_link(time_zone_link&&) = default; time_zone_link& operator=(time_zone_link&&) = default; // 명시되지 않은 추가 생성자들 string_view name() const noexcept; string_view target() const noexcept; }; }
클래스 템플릿 local-time-format-t
namespace std::chrono { template<class Duration> struct /*local-time-format-t*/ { // 설명용 전용 local_time<Duration> time; // 설명용 전용 const string* abbrev; // 설명용 전용 const seconds* offset_sec; // 설명용 전용 }; }