JAVA判断当前时间是否为节假日、周末、工作日,调休日,不报错:IOException! |
您所在的位置:网站首页 › 今天算法定节日吗为什么 › JAVA判断当前时间是否为节假日、周末、工作日,调休日,不报错:IOException! |
JAVA判断当前时间是否为节假日、周末、工作日
有这么个需求,需要判断传的这个日期是否为节假日,周末,工作日,然后做剩下的操作。 话不多说,上代码 1.首先需要拿到节假日api节假日API地址 其实这个api里有接口可以直接判断某天是否为周末,节假日,工作日;但是这个接口访问多了会报一个403的错误,也就是请求太多导致的;而我下面的内容是只请求一次全年节假日即可,放到一个集合里,第二次请求判断的时候就可以直接去集合里判断。速度很快! 2.拿到自己适用接口,如下:参数: 1》year:格式“yyyy”,查询这一年的节假日 https://timor.tech/api/holiday/year返回数据示例: { "code": 0, "holiday": { "01-01": { "holiday": true, "name": "元旦", "wage": 3, "date": "2023-01-01", "rest": 1 }, "01-02": { "holiday": true, "name": "元旦", "wage": 2, "date": "2023-01-02", "rest": 1 }, "01-21": { "holiday": true, "name": "除夕", "wage": 3, "date": "2023-01-21", "rest": 2 }, ..........截图如下 DateUtil工具类,这里写了很多,可以把不需要的删除掉 /** * 日期工具 */ public class DateUtil { /** * 输出当天的时间,格式如:20151207 * * @return */ public static String today() { SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); return format.format(new Date()); } /** * 当前时间 * @return */ public static String currTime() { SimpleDateFormat sdfDetail = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date(); return sdfDetail.format(date); } /** * 当前年 * @return */ public static String currYear() { SimpleDateFormat sdfDetail = new SimpleDateFormat("yyyy"); Date date = new Date(); return sdfDetail.format(date); } public static String format(Date date, String tpl) { SimpleDateFormat format = new SimpleDateFormat(tpl); return format.format(date); } /** * 任意一天的开始时间 * * @return date */ public static Date startOfDay(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); Date returnDate = calendar.getTime(); return returnDate; } /** * 任意一天的结束时间 * * @return date */ public static Date endOfDay(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.HOUR_OF_DAY, 23); calendar.set(Calendar.MINUTE, 59); calendar.set(Calendar.SECOND, 59); calendar.set(Calendar.MILLISECOND, 999); Date returnDate = calendar.getTime(); return returnDate; } /** * 获取时间戳的开始时间 * @param timestamp */ public static Long startOfDayByTimestamp(Long timestamp) { Date date = new Date(timestamp); return startOfDay(date).getTime(); } /** * 获取时间戳的结束时间 * zg * @param timestamp */ public static Long endOfDayByTimestamp(Long timestamp) { Date date = new Date(timestamp); return endOfDay(date).getTime(); } /** * 当天的开始时间 * * @return */ public static Date startOfTodDay() { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); Date date = calendar.getTime(); return date; } /** * 当天的结束时间 * * @return */ public static Date endOfTodDay() { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, 23); calendar.set(Calendar.MINUTE, 59); calendar.set(Calendar.SECOND, 59); calendar.set(Calendar.MILLISECOND, 999); Date date = calendar.getTime(); return date; } /** * 昨天的开始时间 * * @return */ public static Date startOfyesterday() { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.add(Calendar.DATE, -1); calendar.set(Calendar.MILLISECOND, 0); Date date = calendar.getTime(); return date; } /** * 昨天的结束时间 * * @return */ public static Date endOfyesterday() { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, 23); calendar.set(Calendar.MINUTE, 59); calendar.set(Calendar.SECOND, 59); calendar.set(Calendar.MILLISECOND, 999); calendar.add(Calendar.DATE, -1); Date date = calendar.getTime(); return date; } /** * 功能:获取本周的开始时间 示例:2013-05-13 00:00:00 */ public static Date startOfThisWeek() {// 当周开始时间 Calendar currentDate = Calendar.getInstance(); currentDate.setFirstDayOfWeek(Calendar.MONDAY); currentDate.set(Calendar.HOUR_OF_DAY, 0); currentDate.set(Calendar.MINUTE, 0); currentDate.set(Calendar.SECOND, 0); currentDate.set(Calendar.MILLISECOND, 0); currentDate.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); Date date = currentDate.getTime(); return date; } /** * 功能:获取String日期对应的时间戳 * format 格式自定 * * @return */ public static Long formatStringToStamp(String base, String format) { DateFormat df = new SimpleDateFormat(format); Date baseTime; Long stamp = null; try { baseTime = df.parse(base); stamp = baseTime.getTime(); } catch (Exception e) { return null; } return stamp; } /** * 功能:获取String日期对应的时间 * isTotal = false ;yyyy-MM-dd格式限定 * isTotal = true ;yyyy-MM-dd hh-mm-ss格式限定 */ public static Date formatStringToDate(String base, Boolean isTotal) { String format = isTotal ? "yyyy-MM-dd hh-mm-ss" : "yyyy-MM-dd"; DateFormat df = new SimpleDateFormat(format); Date baseTime; try { baseTime = df.parse(base); } catch (Exception e) { return null; } return baseTime; } /** * 功能:获取本周的结束时间 示例:2013-05-19 23:59:59 */ public static Date endOfThisWeek() {// 当周结束时间 Calendar currentDate = Calendar.getInstance(); currentDate.setFirstDayOfWeek(Calendar.MONDAY); currentDate.set(Calendar.HOUR_OF_DAY, 23); currentDate.set(Calendar.MINUTE, 59); currentDate.set(Calendar.SECOND, 59); currentDate.set(Calendar.MILLISECOND, 999); currentDate.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); Date date = currentDate.getTime(); return date; } /** * 功能:获取本月的开始时间 */ public static Date startOfThisMonth() {// 当周开始时间 Calendar currentDate = Calendar.getInstance(); currentDate.set(Calendar.HOUR_OF_DAY, 0); currentDate.set(Calendar.MINUTE, 0); currentDate.set(Calendar.SECOND, 0); currentDate.set(Calendar.MILLISECOND, 0); currentDate.set(Calendar.DAY_OF_MONTH, 1); Date date = currentDate.getTime(); return date; } public static Date endOfThisMonth() { Calendar cal = Calendar.getInstance(); cal.set(Calendar.DAY_OF_MONTH, 1); cal.set(Calendar.HOUR_OF_DAY, 23); cal.set(Calendar.MINUTE, 59); cal.set(Calendar.SECOND, 59); cal.set(Calendar.MILLISECOND, 999); cal.add(Calendar.MONTH, 1); cal.add(Calendar.DATE, -1); Date date = cal.getTime(); return date; } /** * 功能:获取上月的开始时间 */ public static Date startOfLastMonth() {// 当周开始时间 Calendar currentDate = Calendar.getInstance(); currentDate.set(Calendar.HOUR_OF_DAY, 0); currentDate.set(Calendar.MINUTE, 0); currentDate.set(Calendar.SECOND, 0); currentDate.set(Calendar.MILLISECOND, 0); currentDate.set(Calendar.DAY_OF_MONTH, 1); currentDate.add(Calendar.MONTH, -1); Date date = currentDate.getTime(); return date; } /** * 功能:获取上月的结束时间 */ public static Date endOfLastMonth() { Calendar cal = Calendar.getInstance(); cal.set(Calendar.DAY_OF_MONTH, 1); cal.set(Calendar.HOUR_OF_DAY, 23); cal.set(Calendar.MINUTE, 59); cal.set(Calendar.SECOND, 59); cal.set(Calendar.MILLISECOND, 999); cal.add(Calendar.DATE, -1); Date date = cal.getTime(); return date; } private static final int[] DAY_OF_MONTH = new int[]{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; public static final String[] DATE_FORMATS = new String[]{"yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM-dd", "yyyy-MM", "yyyy-MM-dd HH:mm:ss.S", "yyyy年MM月dd日", "yyyy年MM月dd日 HH:mm", "yyyyMMdd", "yyyy年MM月dd日 HH:mm:ss", "MM.dd"}; /** * 将传入的日期转化为"yyyy-MM-dd"形式的字符串 * * @param dt 日期 * @return 指定日期格式的字符串 */ public static String formatDate(Date dt) { return formatDate("yyyy-MM-dd", dt); } /** * 将传入的日期转化为"yyyy-MM-dd HH:mm:ss"形式的字符串 * * @param dt 日期 * @return 指定日期格式的字符串 */ public static String formatDateYMDHMS(Date dt) { return formatDate("yyyy-MM-dd HH:mm:ss", dt); } /** * 将传入的日期转化为"yyyy-MM-dd HH:mm"形式的字符串 * * @param dt 日期 * @return 指定日期格式的字符串 */ public static String formatDateYMDHM(Date dt) { return formatDate("yyyy-MM-dd HH:mm", dt); } /** * 将传入的日期以指定格式转成字符串 * * @param format * @param dt * @return */ public static String formatDate(String format, Date dt) { if (dt == null) { return ""; } if (format.isEmpty()) { format = "yyyy-MM-dd"; } SimpleDateFormat fmt = new SimpleDateFormat(format); return fmt.format(dt); } /** * 将日期字符串转为日期 * * @param dateStr 日期字符串 * @return */ public static Date parseDate(String dateStr) { return parseDate(dateStr, DATE_FORMATS); } /** * 将日期字符串转为指定格式的日期 * * @param dateStr 日期字符串 * @param format 日期格式 * @return */ public static Date parseDate(String dateStr, String format) { return parseDate(dateStr, new String[]{format}); } private static Date parseDate(String dateStr, String[] parsePatterns) { try { return DateUtils.parseDate(dateStr, parsePatterns); } catch (ParseException e) { e.printStackTrace(); return null; } } /** * 获取今天的日期 * * @return */ public static Date getToday() { Calendar cal = Calendar.getInstance(); cal.set(Calendar.HOUR_OF_DAY, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND, 0); return cal.getTime(); } /** * 得到传入日期n天后的日期,如果传入日期为null,则表示当前日期n天后的日期 * * @param dt 日期 * @param days 可以为任何整数,负数表示前days天,正数表示后days天 * @return Date */ public static Date getAddDayDate(Date dt, int days) { Calendar cal = Calendar.getInstance(); if (dt != null) { cal.setTime(dt); } cal.add(Calendar.DAY_OF_MONTH, days); return cal.getTime(); } /** * 得到当前日期几天后(plusDays>0)or 几天前(plusDays 0) { pastTime = hours + "小时前"; } else if ((mins = getMinuteBetween(current, createTime)) > 0) { pastTime = mins + "分钟前"; } else { long seconds = getSecondBetweem(current, createTime); if (seconds > 5) { pastTime = seconds + "秒前"; } else { pastTime = "刚刚"; } } return pastTime; } /** * 获取从今天开始未来一周的星期和日期的映射表 1-星期一:2014-05-12,2-星期二:2014-05-13..... * * @return */ public static Map getDateForWeekDay() { Map weekDayDateMap = new HashMap(); Calendar calendar = Calendar.getInstance(); for (int i = 1; i |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |