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;
}
}