我的想法是构建一个包含所有假期的字符串数组。然后将输入日期与数组进行比较。似乎非常不方便,必须用手输入所有周末的日期等。有更好的想法吗?
答案 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
并比较天数,将其标记为假日或工作日。