我必须计算给定时间段之间的工作日数,这很简单,但考虑到公共假期会增加复杂性.
我的解决方案不是我称之为优雅也不高效,因为它检索公共假期并将它们放入列表中,检查列表中的日期是否与给定时间段内的日期匹配,以便通过从开始递增日期来检查日期.
虽然这很好但我宁愿有一个更有效的算法有没有人得到任何提示或建议不同的数据结构来举行公众假期?
如果您按顺序存储了公共假期,则可以在列表中进行二元搜索,以查找列表中您的时间段开始的位置,另一个查找列表中的结束位置期间下降.然后你只需要采取"正常"差异(删除周末)并减去二进制搜索结果之间的项目数.
小心公共假期开始或结束的时间段!
(List
假设您正在使用DateTime或其他一些自然可比的时间结构,方法应该没问题.请注意,如果您要搜索的密钥实际上不在列表中,则返回值为负(它不会是最多的)当时).请参阅文档中的备注.)