728x90
이번에 chrono에 시간관련 라이브러리가 추가되었다
매우 사용하기 쉬우니... 한번 돌려보면 바로 이해 될 듯...
// hh_mm_ss : duration since midnight, split into hours, minutes, seconds, fractional seconds
auto timeOfDay = std::chrono::hh_mm_ss(12.5h + 32min + 100s + 0.6s);
cout << timeOfDay << endl;
cout << timeOfDay.hours() << endl;
cout << timeOfDay.minutes() << endl;
cout << timeOfDay.seconds() << endl;
cout << timeOfDay.subseconds() << endl;
cout << timeOfDay.to_duration() << endl;
// Calendar Date
using namespace chrono;
chrono::year_month_day ymd1{year(2021), month(11), day(14)};
chrono::year_month_day ymd2{year(2021)/month(11)/day(14)};
chrono::year_month_day ymd3{2021y, November, 14d};
cout << ymd1 << endl;
// 해당 년/월의 마지막날을 가져오는 방법
// year/month/day
// day/month/year
// month/day/year
std::chrono::year_month_day_last ymdl1 = 2021y / November / last;
std::chrono::year_month_day_last ymdl2 = last / November / 2021y;
std::chrono::year_month_day_last ymdl3 = November / last / 2021;
auto d1 = ymdl1.day();
chrono::year_month_day ymd4{ymdl1};
// 해당 년/월의 4번째 금요일 날짜 가져오는 방법
std::chrono::year_month_weekday ymwkd1{year(2021)/November/Friday[4]};
chrono::year_month_day ymd5{ ymwkd1 };
// timepoint
time_point timePoint = chrono::sys_days(ymd1);
// Cute Syntax
// 2021y, 30d, January, February, ... December
// Validation
std::chrono::day d{31};
d++;
bool valid = d.ok();
auto leapYear2000{year(2000)/2/29};
auto leapYear2001{year(2001)/2/29};
auto leapYear2002{year(2002)/2/29};
bool valid2 = leapYear2000.ok(); // true
bool valid3 = leapYear2001.ok(); // false
bool valid4 = leapYear2002.ok(); // false
auto now = std::chrono::system_clock::now();
auto diff = floor<chrono::hours>(now) - sys_days(1987y / January / 30d);
728x90
'Basic Programming > C++ 20' 카테고리의 다른 글
C++20 - format (0) | 2024.01.20 |
---|---|
C++20 - Time Zone (0) | 2024.01.20 |
C++20 - 비트연산 (0) | 2024.01.17 |
C++20 - erase, erase_if (1) | 2023.12.29 |
C++20 - Template Parameter for Lambda (0) | 2023.12.28 |