Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 如何在Groovy中找到两个日期之间的天数,去掉政府假期?_Date_Groovy - Fatal编程技术网

Date 如何在Groovy中找到两个日期之间的天数,去掉政府假期?

Date 如何在Groovy中找到两个日期之间的天数,去掉政府假期?,date,groovy,Date,Groovy,我们需要在Groovy中找到两个日期之间的天数,并删除美国的政府假期。与此类似,具有不同的皱纹 我们试图集思广益,找出在Groovy中存储日期的最佳方法,因为某些日期是固定的新年、7月4日、圣诞节和其他日期是灵活的总统节是2月的第三个星期一。然后检查日期是否包含任何美国政府假日。您可以使用政府假日创建域类 class GHolidays { Date date String description } 在控制器中创建一个方法以获取两个日期之间的天数,并删除政府假日 clas

我们需要在Groovy中找到两个日期之间的天数,并删除美国的政府假期。与此类似,具有不同的皱纹


我们试图集思广益,找出在Groovy中存储日期的最佳方法,因为某些日期是固定的新年、7月4日、圣诞节和其他日期是灵活的总统节是2月的第三个星期一。然后检查日期是否包含任何美国政府假日。

您可以使用政府假日创建域类

class GHolidays {
     Date date
     String description
}
在控制器中创建一个方法以获取两个日期之间的天数,并删除政府假日

class ExampleController {
     def daysGH = GHolidays.createCriteria().get{
          projections {
               count("id")
          } 
          between("date", date1, date2)
     }  

     use(groovy.time.TimeCategory) {
          def duration = date1 - date2
          def daysWithoutGH = duration.days - daysGH
          println "Days without Government holidays: ${daysWithoutGH}"
     }
}

下面这样做就行了

enum US2015holidays {
    New_Years_Day('01/01'),    
    Martin_Luther_King_Day('01/19'),
    Groundhog_Day('02/02', false),
    Presidents_Day('02/16'),
    Emancipation_Day('04/16', false),
    Mothers_Day('05/10'),
    Memorial_Day('05/25'),
    Fathers_Day('06/21', false),
    Independence_Day('07/03'),
    Labor_Day('09/07'),
    Columbus_Day('10/12'),
    Veterans_Day('11/11'),
    Thanksgiving('11/26'),
    Day_after_Thanksgiving('11/27'),
    Christmas_Day('12/25')

    private final Date holiday
    private final boolean isObserved

    US2015holidays(String day, boolean isObserved = true) {
        this.holiday = Date.parse('yyyy/MM/dd', "2015/$day")
    }

    public Date getHoliday() {
        isObserved ? holiday : null
    }
}

import static java.util.Calendar.*

def noOfWorkingDays = 0
Date begin = Date.parse('yyyy/MM/dd', '2015/01/01')
Date end   = Date.parse('yyyy/MM/dd', '2015/04/11')

begin.upto( end ) {
    if ( !( it[DAY_OF_WEEK] in [ SUNDAY, SATURDAY ] || 
            it.clearTime()  in US2015holidays.values()*.holiday ) ) {
        noOfWorkingDays++
    }
}

println noOfWorkingDays
注:假期可能因地理位置而异。例如:耶稣受难节是在哥伦布这里举行的,哦,但我在其他任何地方都没有看到过