HolidayOrWork.java
3.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
package com.lhcredit.common.utils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.DayOfWeek;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
public class HolidayOrWork {
public static Boolean isWorkingDay(long time, List extraWorkDay,List holiday) {
LocalDateTime dateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(time), ZoneOffset.of("+8"));
String formatTime = dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
//是否加班日
if(extraWorkDay.contains(formatTime)){
return true;
}
//是否节假日
if(holiday.contains(formatTime)){
return false;
}
//如果是1-5表示周一到周五 是工作日
DayOfWeek week = dateTime.getDayOfWeek();
if(week==DayOfWeek.SATURDAY||week==DayOfWeek.SUNDAY){
return false;
}
return true;
}
public static Date getWorkDay(String date,int days,String workStr,String holidayStr) {
String[] holidays=holidayStr.toString().split(",");
String[] workdays=workStr.split(",");
List holiday=new ArrayList();
List extraWorkDay=new ArrayList();
for(int k=0;k<holidays.length;k++){
holiday.add(holidays[k].trim());
}
for(int o=0;o<workdays.length;o++){
extraWorkDay.add(workdays[o].trim());
}
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Date d= null;
try {
d = sdf.parse(date);
} catch (ParseException e) {
throw new RuntimeException(e);
}
Boolean workingDay = isWorkingDay(d.getTime(),extraWorkDay,holiday);
Date sday=null;
//判断行政决定日是否为工作日
if(workingDay){
// System.out.println("工作日");
//行政决定日 + 6个工作日
int k=1;
int j=1;
while(true){
Calendar c = Calendar.getInstance();
c.setTime(d);
c.add(Calendar.DATE, j);
Date day=c.getTime();
Boolean b=isWorkingDay(day.getTime(),extraWorkDay,holiday);
if(k==days){
if(b){
sday=day;
break;
}
}
if(b){
k++;
}
j++;
}
}else {
// System.out.println("开开心心过节!!!");
//行政决定日 + 7个工作日
int k=1;
int j=1;
while(true){
Calendar c = Calendar.getInstance();
c.setTime(d);
c.add(Calendar.DATE, j);
Date day=c.getTime();
Boolean b=isWorkingDay(day.getTime(),extraWorkDay,holiday);
if(k==days){
if(b){
sday=day;
break;
}
}
if(b){
k++;
}
j++;
}
}
return sday;
}
public static void main(String[] args) throws ParseException {
String holidayStr="2024-01-01,2024-02-10,2024-02-11,2024-02-12,2024-02-13,2024-02-14,2024-02-15,2024-02-16,2024-02-17,2024-04-04,2024-04-05,2024-04-06,2024-05-01,2024-05-02,2024-05-03,2024-05-04,2024-05-05,2024-06-08,2024-06-09,2024-06-10,2024-09-15,2024-09-16,2024-09-17,2024-10-01,2024-10-02,,2024-10-03,2024-10-04,2024-10-05,2024-10-06,2024-10-07";
String workStr="2024-02-04,2024-02-18,2024-04-07,2024-04-28,2024-05-11,2024-09-14,2024-09-29,2024-10-12";
System.out.print(HolidayOrWork.getWorkDay("2024-06-08",4,workStr,holidayStr));
}
}