计算两个日期之间的有效工作时间一天工作时间是8:00 上班,  下午6点下班,其余时间不能算工作时间.这个算法用JAVA怎么实现?

解决方案 »

  1.   

    哈哈哈,楼上的,新手吧。
    ps:没有bs的意思。偶也是这么过来的。呵呵。给个实现的思路。
    算法一:
    如果程序没有特别效率要求,
    制定一个接口(假定是A)。这个接口要求实现功能: 给定一个日期,可以判断该日期是否符合该接口的实现类维护的特殊日期标准,如果符合就返回设定的上班时间和下班时间,以及优先级别,如果如果不符合或者该天不记上班或下班时间比如是节假日,那么返回空。(这样可以定制到某一个日子的上班时间)用一个列表L维护实现了接口A的类。那么你可以把判断特殊日子的规则都存放在列表L中比如 每周六周日,法定假期十一等甚至个别对某一个公司意义重大的日子都可以。
    (注意:特殊日子的设定会存在冲突,比如某一天可能同属国庆和周日或者更多,需要指定判断的优先级别)对给定的一段时间,逐一遍历每一天,遍历过程中,对于每一天都去列表匹配一遍。如果结果全都为空则按照正常的标准计算。如果不为空,则按照最高优先级别来计算。这个算法虽然简单但是效率很低。