本文目錄一覽:
JAVA判斷當前日期是節假日還是工作日
你好,這個功能一般是使用一個專門的數據庫表把一年的節假日都存進去來判斷的。國家每年都會提前發佈一年的節假日,然後我們再導入到數據庫。而特殊的做法應該可以接入百度之類的接口。希望能幫到你。
一段可以跳過周末和節假日的java程序怎麼寫
public static boolean isWeekend(Date date) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int result = cal.get(Calendar.WEEK_OF_MONTH);
if (result == Calendar.SATURDAY || result == Calendar.SUNDAY) {
return true;
}
return false;
}
這段代碼只是判斷是不是周末,節假日的話只能通過某些數據配置來判斷了。節假日是沒法計算的。
使用java 排除 兩個日期段中的 休息日和節假日 。在線等待中十萬火急,求大牛幫忙,多謝了。。。。
時間處理,更方便和更易讀的代碼角度講,肯定要用Java8的新date api啦,由於涉及到一系列日期,所以結合Java8的Stream也是理所當然
總體思路:
由於節假日每年在變,所以需要羅列出所有的節假日集合A
生成2016-01-01 至 2016-05-01所有的日期,生成日期集合B
從B中過濾掉A中的節假日
從B中過濾掉周六周日
最後把B中集合打印
結合思路,所見即所得的代碼如下:
// 所有節假日的日期集合,這裡你可以自己添加,只寫了兩個僅供參考(完成思路1)
ListLocalDate holidays = Arrays.asList(LocalDate.parse(“2016-01-01”), LocalDate.parse(“2016-05-01”));
// 按照起始2016-01-01,每次遞增一天的方式生成一個Stream
Stream.iterate(LocalDate.parse(“2016-01-01”), localDate – localDate.plusDays(1))
// 按照要求的時間間隔2016-01-01 至 2016-05-01中的實際間隔天數截斷Stream(完成思路2)
.limit(ChronoUnit.DAYS.between(LocalDate.parse(“2016-01-01”), LocalDate.parse(“2016-05-01”)))
// 過濾其中的節假日(完成思路3)
.filter(localDate – !holidays.contains(localDate))
// 過濾其中的周六
.filter(localDate – !DayOfWeek.SATURDAY.equals(DayOfWeek.of(localDate.get(ChronoField.DAY_OF_WEEK))))
// 過濾其中的周日(完成思路4)
.filter(localDate – !DayOfWeek.SUNDAY.equals(DayOfWeek.of(localDate.get(ChronoField.DAY_OF_WEEK))))
// 打印最後結果(完成思路5)
.forEach(System.out::println);
打印的結果:
綜上:結合新時間API的易用性+Stream處理集合的快捷性,寫出代碼還是很簡潔的
原創文章,作者:SKOO,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/137626.html