如何确定给定日期是否是C ++中的工作日

时间:2017-02-08 05:27:56

标签: c++

我的想法是构建一个包含所有假期的字符串数组。然后将输入日期与数组进行比较。似乎非常不方便,必须用手输入所有周末的日期等。有更好的想法吗?

3 个答案:

答案 0 :(得分:3)

使用Howard Hinnant's free, open source C++11/14 date library,这是2017年的所有周末。

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

int
main()
{
    using namespace date;
    for (sys_days sd = jan/1/2017; sd < jan/1/2018; sd += days{1})
    {
        weekday wd = sd;
        if (wd == sat || wd == sun)
            std::cout << sd << '\n';
    }
}

2017-01-01
2017-01-07
2017-01-08
2017-01-14
...
2017-12-23
2017-12-24
2017-12-30
2017-12-31

答案 1 :(得分:1)

您可以设置初始日期,例如 2017年1月1日,它是星期日。你可以计算其他日子是否是工作日。

例如,您有一个名为days的数组有7个元素,存储周一到周日。像:

std::string days[] = { "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun" };

如果您想知道某一天是否是工作日,请说明 2017年1月3日。首先,您可以计算您想要计算的日期和初始日期之间的差异( 2017年1月1日)。在我们的例子中它是2.然后结果是days[2 % 7 - 1]-1,因为我们的初始日设置为星期日。如果我们将初始日设置为星期一,则不需要-1 2017年1月3日是星期二,这意味着它是工作日。

答案 2 :(得分:1)

我的建议是首先确定指定日期的星期几,以确定它是星期日或星期六。

使用此逻辑来确定它:https://en.wikipedia.org/wiki/Determination_of_the_day_of_the_week

对于代码,请使用此链接:GeeksforGeeksCode

并比较天数,将其标记为假日或工作日。