std::chrono::year_month_day
std::chrono::year_month_day (연·월·일 클래스)
특정 연도, 월, 일을 나타내는 클래스예요. 필드 기반 시점 타입으로, 분해능은 std::chrono::days예요. C++20의 chrono 달력 시스템에서 정확한 날짜를 표현해요.
출처: cppreference
본문
<chrono> 헤더에 정의돼 있고, 특정 연도, 월, 일을 나타내요.
class year_month_day;
필드 기반 시점 타입이고, 분해능은 std::chrono::days예요. std::chrono::years·std::chrono::months 중심 산술이 직접 지원돼요. std::chrono::sys_days와의 암시적 변환 덕분에 std::chrono::days 중심 산술도 효율적으로 수행할 수 있어요. year_month_day는 TriviallyCopyable한 StandardLayoutType이에요.
멤버 함수:
- 생성자:
year_month_day를 만들 수 있어요. operator+=,operator-=: 시점을 몇 달 또는 몇 년만큼 수정해요.year(),month(),day(): 이 객체에 저장된 연, 월, 일에 접근해요.operator sys_days,operator local_days:std::chrono::time_point로 변환해요.ok: 이year_month_day가 유효한 날짜를 나타내는지 확인해요.
비멤버 함수:
operator==,operator<=>(C++20): 두year_month_day값을 비교해요.operator+,operator-(C++20):year_month_day에 몇 년 또는 몇 달을 더하거나 빼요.operator<<(C++20):year_month_day를 스트림에 출력해요.from_stream(C++20): 제공된 형식에 따라 스트림에서year_month_day를 파싱해요.
헬퍼 클래스:
std::formatter<std::chrono::year_month_day>(C++20):year_month_day포맷 지원.std::hash<std::chrono::year_month_day>(C++26):std::chrono::year_month_day해시 지원.
예제를 보면 현재 시점에서 연·월·일을 추출할 수 있어요.
#include <chrono>
#include <iostream>
int main()
{
const std::chrono::time_point now{std::chrono::system_clock::now()};
const std::chrono::year_month_day ymd{std::chrono::floor<std::chrono::days>(now)};
std::cout << "Current Year: " << static_cast<int>(ymd.year()) << ", "
"Month: " << static_cast<unsigned>(ymd.month()) << ", "
"Day: " << static_cast<unsigned>(ymd.day()) << "\n"
"ymd: " << ymd << '\n';
}
가능한 출력:
Current Year: 2023, Month: 9, Day: 4
ymd: 2023-09-04
이렇게 year_month_day는 달력 날짜의 표준 표현으로, sys_days와 변환이 가능해 날짜 산술이 편리해요.