Java日期计算总结(包含工作日排除节假日) 您所在的位置:网站首页 国家法定节假日算不算周末 Java日期计算总结(包含工作日排除节假日)

Java日期计算总结(包含工作日排除节假日)

2024-07-11 20:28| 来源: 网络整理| 查看: 265

#博学谷IT学习技术支持#

说明:日常代码编写过程中,经常会涉及带到日期的计算。 本文简单的介绍了一些日期计算和工作日的计算 针对与工作日的计算引用了第三方的接口,查询国家法定节假日

文章目录 Java日期计算方法1.参数的日期加指定的年、月、日2.参数的日期加指定的时、分、秒3.从日期FROM到日期TO的天数4.参数的日期加指定的工作日 总结

Java日期计算方法

提示:以下是本篇文章正文内容,下面案例可供参考

1.参数的日期加指定的年、月、日

代码如下(示例):

/** * @Description 参数的日期加指定的年 * @param date 日期 * @param year 加算的年 * @return 加算后的日期 */ public static Date addYear(Date date, int year) { if (date == null) { return null; } Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.YEAR, year); return calendar.getTime(); } /** * @Description 参数的日期加指定的月 * @param date 日期 * @return 指定的月 * @return 加算后的日期 */ public static Date addMonth(Date date, int month) { if (date == null) { return null; } Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.MONTH, month); return calendar.getTime(); } /** * @Description 参数的日期加指定的日 * @param date 日期 * @return 指定的日 * @return 加算后的日期 */ public static Date addDay(Date date, int day) { if (date == null) { return null; } Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.DATE, day); return calendar.getTime(); } 2.参数的日期加指定的时、分、秒

代码如下(示例):

/** * @Description 参数的日期加指定的时 * @param date 日期 * @param hour 加算的时 * @return 加算后的日期 */ public static Date addHour(Date date, int hour) { if (date == null) { return null; } Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.HOUR_OF_DAY, hour); return calendar.getTime(); } /** * @Description 参数的日期加指定的分 * @param date 日期 * @param min 加算的分 * @return 加算后的日期 */ public static Date addMinute(Date date, int min) { if (date == null) { return null; } Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.MINUTE, min); return calendar.getTime(); } /** * @Description 参数的日期加指定的分 * @param date 日期 * @param second 加算的秒 * @return 加算后的日期 */ public static Date addSecond(Date date, int second) { if (date == null) { return null; } Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.SECOND, second); return calendar.getTime(); } 3.从日期FROM到日期TO的天数

代码如下(示例):

/** * @Description 从日期FROM到日期TO的天数 * @param dateStrFrom 日期FROM("yyyy-MM-dd") * @param dateStrTo 日期TO("yyyy-MM-dd") * @return int 天数 */ public static int getDaysIn2Day(String dateStrFrom, String dateStrTo) { if (StringUtils.isEmpty(dateStrFrom) || StringUtils.isEmpty(dateStrTo)) { return 0; } SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Calendar fromCalendar = Calendar.getInstance(); Calendar toCalendar = Calendar.getInstance(); try { fromCalendar.setTime(sdf.parse(dateStrFrom.trim())); toCalendar.setTime(sdf.parse(dateStrTo.trim())); } catch (ParseException ex) { throw new RuntimeException(ex); } long day = (toCalendar.getTime().getTime() - fromCalendar.getTime().getTime()) / (24 * 60 * 60 * 1000); return ConvUtils.convToInt(day); } 4.参数的日期加指定的工作日 /** * @Description 参数的日期加指定的工作日(不排除节假日) * @param startDate 开始日期 * @param workDay 工作日天数(周一到周五) * @return 加算后的日期 */ public static String getWorkDay(Date startDate, int workDay) { Calendar c1 = Calendar.getInstance(); c1.setTime(startDate); for (int i = 0; i workDay = workDay + 1; c1.set(Calendar.DATE, c1.get(Calendar.DATE) - 1); continue; } } SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); c1.set(Calendar.DATE, c1.get(Calendar.DATE) +1); return df.format(c1.getTime()); } /** * @Description 参数的日期加指定的工作日(排除节假日) * @param startDate 开始日期 * @param timeout 加的工作日(节假日不算) * @return 加算后的日期 */ public static Map getWorkDays(Date nowTime, int timeout) { Calendar calendar = Calendar.getInstance(); calendar.setTime(nowTime); int year = calendar.get(Calendar.YEAR); String s = HttpsUtils.sendSSLRequest("http://timor.tech/api/holiday/year/" + year, Maps.newHashMap(), HttpsUtils.Method_GET); Map map = JsonUtils.deserialize(s, Map.class); Map holiday = (Map) map.get("holiday"); int timeouts = 0; String lastTime =""; String week = ""; for (int i = 1; i Map ts = (Map) holiday.get(lastTime); if (ConvUtils.convToBool(ts.get("holiday"))) { timeouts++; timeout++; }; } else { //判断是否为周六周日 week = getWeek(addDay(nowTime, i)); if (week.equals("星期六") || week.equals("星期日")) { timeouts++; timeout++; } }; } Map maps = Maps.newHashMap(); //工作日后实际日期: maps.put("lastTime",lastTime); //实际天数 maps.put("timeout",timeout); //节假日天数 maps.put("timeouts",timeouts); return maps; } /** * @Description 根据日期获取得文字 星期几 * @param startDate date * @return 例子:星期一 */ public static String getWeek(Date date){ String[] weeks = {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"}; Calendar cal = Calendar.getInstance(); cal.setTime(date); int week_index = cal.get(Calendar.DAY_OF_WEEK) - 1; if(week_index System.out.println(getWorkDays(new Date(),7));; }

查询国家法定节假日接口

接口地址:http://timor.tech/api/holiday/year/2022

接口查询参数: 在这里插入图片描述

总结

以上简单的总结了几种Java中常用的日期计算,希望能对于大家有所帮助,谢谢!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有