如何在C++中查找前一个星期一的日期

我想做一个程序,它不接受任何输入,并返回上个星期一的日期。(我不关心时区。我只担心公历)。我正在使用date by Howard Hinnant。这就是我目前所做的:

#include <iostream>
#include <date/date.h>

int main() {

    auto todays_day = date::year_month_weekday(date::floor<date::days>(std::chrono::system_clock::now()));

    auto todays_date = date::floor<date::days>(std::chrono::system_clock::now());

    int offset = 0;

    auto weekday = todays_day.weekday();

    if(weekday == date::Tuesday)
        offset = 1;
    else if (weekday == date::Wednesday)
        offset = 2;
    else if (weekday == date::Thursday)
        offset = 3;
    else if (weekday == date::Friday)
        offset = 4;
    else if (weekday == date::Saturday)
        offset = 5;
    else if (weekday == date::Sunday)
        offset = 6;

    auto lastMonday = date::year_month_day(todays_date - date::days(offset));

    std::cout << lastMonday;
}

有没有更好的方法来在没有boost::previous_weekday的情况下做到这一点?(不要求不使用boost。我只是想知道这是否可能)

转载请注明出处:http://www.nali5.com/article/20230507/2072374.html