如何在提升日期时间中忽略周末和节假日

How to ignore weekends and holidays in boost date time?

本文关键字:周末 节假日 时间 日期      更新时间:2023-10-16

第一个问题

我有一个提升日期对象如下:

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()是一个很难破解的难题。处理它的最简单方法是有一个已知假期的表,并检查作为参数传递的日期是否与其中任何一个一致。在我看来,最好有一个基于规则的方法,可以计算给定日期是否是假期。