如何在提升日期时间中忽略周末和节假日
How to ignore weekends and holidays in boost date time?
第一个问题
我有一个提升日期对象如下:
boost::gregorion::date今日(201202/13)
我从《今日》中减去一个日期部分如下:
今天-月(240)或今天-天(X)等。。
我想在做上述减法时,是否有办法排除周末和特殊假期?我的意思是,如果今天是星期三,那么第四天应该是最后一个星期五。
第二个问题
类似地,我使用类似于以下的东西来进行时间操作:
ptime ptNow(day_clock::local_day());ptNow-分钟(1170);
- 同样,有没有一种方法可以从分钟/小时的子动作中忽略周末/节假日
- 我真的希望我的1170分钟是1170交易分钟(每天19.5个交易小时/6.5个小时)。换句话说,我希望我一天的开始时间是美国东部时间上午9:30,结束时间是美国中部时间下午16:00,如果我叫ptNow-分钟(1170),我应该会回到1170交易分钟
在处理假期时,实际上只有一个选择:一天一次。您应该一次迭代一天,如果一天"很重要",则根据需要添加/子字符串。在伪代码中:
date add(date startDate, int daysToAdd) {
int i:=0
endDate:=startDate
while (i<daysToAdd) {
endDate++
if ( NOT(isWeekend(endDate))
AND NOT(isHoliday(endDate)) {
i++
}
}
return endDate
}
CCD_ 1实现起来微不足道;另一方面,isHoliday()
是一个很难破解的难题。处理它的最简单方法是有一个已知假期的表,并检查作为参数传递的日期是否与其中任何一个一致。在我看来,最好有一个基于规则的方法,可以计算给定日期是否是假期。