Части даты в C++
У готовой даты читают отдельные части:
день месяца, номер дня в году и день недели.
День месяца лежит в поле day.
День года считают как расстояние от
первого января, день недели дает
weekday:
int main() {
std::chrono::year_month_day note{std::chrono::year{2024}, std::chrono::month{2}, std::chrono::day{29}};
std::chrono::sys_days sd = std::chrono::sys_days{note};
std::chrono::year_month_day jan1{note.year() / std::chrono::January / 1};
auto dayOfYear = (sd - std::chrono::sys_days{jan1}).count() + 1;
std::chrono::weekday wd{sd};
std::cout << unsigned(note.day()) << " "
<< dayOfYear << " "
<< wd.c_encoding() << "\n";
return 0;
}
Дана дата:
std::chrono::year_month_day note{std::chrono::year{2024}, std::chrono::month{2}, std::chrono::day{29}};
Выведите день месяца и день года.
Выведите день года для текущей даты.
Дана дата:
std::chrono::year_month_day edge{std::chrono::year{2023}, std::chrono::month{1}, std::chrono::day{1}};
Выведите ее день года.