我有一个要求,我需要在日期字段上工作,每天我需要管理一个发送和接收磁带进行处理备份,但是对于运营商有任何特殊条件,他们没有人同意在假期工作,所以要求是一些东西像这样
我将运行每次检查营业日期的服务,并且需要操作员在假期或周末(周六和周日)之前发送磁带驱动器:
-
我有一个主假期表,所以我会在当前的 table 上寻找假期 .
-
如果是 . 今天是服务第一次开始时的星期一 . 明天周二是假期,所以我必须在周一处理周二的所有工作 .
-
如果是 . 今天是服务第一次开始时的星期一 . 明天周二和周三是假期,所以我必须处理周一和周三的所有工作 .
-
如果是 . 今天是服务第一次开始时的星期一 . 明天周四是假期,所以我必须在星期四星期三办理所有工作 .
如果星期五没有放假,那么星期六和星期日必须处理流程磁带,如果假期然后星期五到星期日的流程磁带将在星期四进行处理,如果明天还有,那么仍然会继续这样的流程假期所以必须在明天之前处理,而不是在假期 .
我第一次运行服务Ex时出现问题,周二和周三是假期,我怎么知道?其实我不知道,我们怎么知道明天是否是假期继续进行 .
我已经通过多个if和else案例尝试了上述问题的解决方案,但只是想知道是否有任何通用和优雅的方式来做到这一点?
2 回答
Actually I didn't know, how we can to know if tomorrow is holiday to continue process.
我不确定我是否理解这个问题,因为你可以测试明天是否像你今天一样测试假期 . 部分假日日期列表:
这些是使用的更大列表中有趣的 . 不幸的是,大多数这些都创造了假日/周末的多日序列 . FooBar Day是单日游 .
工作清单类,用于累积未来工作日期:
testDates列表是每个假期条目前后3天的每个日期 . 扫描并创建工作清单:
一些结果:
工作清单不包括前一个工作日
2/8工作清单是为期3天的Ziggy Festival
2/12列表是"accidental"测试日期 . 它被包括在内,因为它是在Ziggy Festival的最后一天之后的3天内 . 这是周末的标准周五列表
5/4和5/17表示单日假期
最后两个只显示很长的假日字符串
我不能想到这里的通用方法,因为假期通常是打算使用您的服务的国家或组织的任意会计 . 据我所知,您必须将发送/处理磁带和假日列表的服务逻辑分开 . 当您定义假日列表(在db表中或简单地在xml中)时,您应该能够定义诸如日期和标志之类的内容来表示它是否是假日 . 现在,当您的服务执行时,它首先检查当天是否是假日;如果是这样,它可以跳过磁带加载,否则加载磁带当天和其他连续假期(查找从当前日期到下一个工作日的其他假期) .