Date 如何在Groovy中找到两个日期之间的天数,去掉政府假期?
我们需要在Groovy中找到两个日期之间的天数,并删除美国的政府假期。与此类似,具有不同的皱纹Date 如何在Groovy中找到两个日期之间的天数,去掉政府假期?,date,groovy,Date,Groovy,我们需要在Groovy中找到两个日期之间的天数,并删除美国的政府假期。与此类似,具有不同的皱纹 我们试图集思广益,找出在Groovy中存储日期的最佳方法,因为某些日期是固定的新年、7月4日、圣诞节和其他日期是灵活的总统节是2月的第三个星期一。然后检查日期是否包含任何美国政府假日。您可以使用政府假日创建域类 class GHolidays { Date date String description } 在控制器中创建一个方法以获取两个日期之间的天数,并删除政府假日 clas
我们试图集思广益,找出在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
注:假期可能因地理位置而异。例如:耶稣受难节是在哥伦布这里举行的,哦,但我在其他任何地方都没有看到过