1. 程式人生 > 其它 >vue 判斷某個時間小於當前時間 & 判斷是不是假期

vue 判斷某個時間小於當前時間 & 判斷是不是假期

1、vue 判斷某個時間小於當前時間

<view v-if="new Date().getTime()>new Date(user.allowTime).getTime()"> 顯示 </view>

2、有個需求要判斷是否是工作日

有些開源的已經停了,有的雖然訪問免費但是訪問次數受限需要付費才可以解除限制。

採取配置方式,每年假日辦公佈假期和調休日期後,加到配置檔案中

#######法定節假日日期#######
2022-01-01
2022-01-02
2022-01-03
2022-01-31
2022-02-01
2022-02-02
2022-02-03
2022-02-04
2022-02-05
2022-02-06
2022-04-03
2022-04-04
2022-04-05
2022-04-30
2022-05-01
2022-05-02
2022-05-03
2022-05-04
2022-06-03
2022-06-04
2022-06-05
2022-09-10
2022-09-11
2022-09-12
2022-10-01
2022-10-02
2022-10-03
2022-10-04
2022-10-05
2022-10-06
2022-10-07
2023-01-01
2023-01-02
#######調休加班日期#######
2022-01-29 2022-01-30 2022-04-02 2022-04-24 2022-05-07 2022-10-08 2022-10-09

public class HolidayUtils {
/**
* 法定節假日
*/
static List<String> holiday = new ArrayList<>();
/**
* 調休上班日
*/
static List<String> extraWorkDay = new ArrayList<>();
/**
* 法定節假日標識字串
*/
private static final String HOLIDAY_FLAG_STRING = "#######法定節假日日期#######";
/**
* 調休加班標識字串
*/
private static final String EXTRAWORKDAY_FLAG_STRING = "#######調休加班日期#######";

/**
* 初始化節假日和調休
*/
public void initHolidayAndExtraWorkDay() throws IOException {
//方式二 利用FileUtils將ClassPathResource.getInputStream 得到的輸入流複製到臨時檔案中
Resource resource = new ClassPathResource("holiday.txt");
InputStream inputStream = resource.getInputStream();
File tempFile = File.createTempFile("temp", ".txt");
FileUtils.copyInputStreamToFile(inputStream, tempFile);
String s = FileUtils.readFileToString(tempFile, StandardCharsets.UTF_8);

String[] split = s.split("\r\n");
//方式一, 手動編寫檔案讀取方法
//List<String> list = readTxtFile("holiday.txt");
List<String> list = Arrays.asList(split);
//定義起始下標
int startIndex = 0;
//定義結束下標
int endIndex = 0;
startIndex = list.indexOf(HOLIDAY_FLAG_STRING);
endIndex = list.indexOf(EXTRAWORKDAY_FLAG_STRING);
List<String> holidayList = list.subList(startIndex + 1, endIndex);
List<String> initExtraWorkDay = list.subList(endIndex + 1, list.size());
//初始化節假日
holiday.addAll(holidayList);
//初始化額外加班日
extraWorkDay.addAll(initExtraWorkDay);
}

/**
* 判斷是否是工作日
* 法定工作日: 調休加班日 + 非法定節假日 + 平時工作日(周1~5)
*
* @param time 當前時間(毫秒數)
* @return true: 工作日, false: 節假日
* @throws IOException
*/
public Boolean isWorkingDay(long time) throws IOException {
LocalDateTime dateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(time), ZoneOffset.of("+8"));
String formatTime = dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
initHolidayAndExtraWorkDay();
//是否加班日
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;
}

/**
*
* @param time
* @return 0工作日、1節假日、2週末
* @throws IOException
*/
public Integer getDay(String time) throws IOException {

LocalDateTime dateTime=LocalDateTime.parse(time, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
dateTime.plusHours(24);
String formatTime = dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
initHolidayAndExtraWorkDay();
//是否加班日
if (extraWorkDay.contains(formatTime)) {
return 0;
}
//是否節假日
if (holiday.contains(formatTime)) {
return 1;
}
//如果是1-5表示週一到週五 是工作日
DayOfWeek week = dateTime.getDayOfWeek();
if (week == DayOfWeek.SATURDAY || week == DayOfWeek.SUNDAY) {
return 2;
}
return 0;
}

}