vue 判斷某個時間小於當前時間 & 判斷是不是假期
阿新 • • 發佈:2022-05-10
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;
}
}