/** * 获取日期中的某数值。如获取月份 * * @param date 日期 * @param dateType 日期格式 * @return 数值 */ private static int getInteger(Date date, int dateType) { int num = 0; Calendar calendar = Calendar.getInstance(); if (date != null) { calendar.setTime(date); num = calendar.get(dateType); } return num; } /** * 增加日期中某类型的某数值。如增加日期 * * @param date 日期 * @param dateType 类型 * @param amount 数值 * @return 计算后日期 */ public static Date addInteger(Date date, int dateType, int amount) { Date myDate = null; if (date != null) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(dateType, amount); myDate = calendar.getTime(); } return myDate; } /** * 增加日期的年份。失败返回null。 * * @param date 日期 * @param yearAmount 增加数量。可为负数 * @return 增加年份后的日期 */ public static Date addYear(Date date, int yearAmount) { return addInteger(date, Calendar.YEAR, yearAmount); } /** * 增加日期的月份。失败返回null。 * * @param date 日期 * @param monthAmount 增加数量。可为负数 * @return 增加月份后的日期 */ public static Date addMonth(Date date, int monthAmount) { return addInteger(date, Calendar.MONTH, monthAmount); } /** * 增加日期的天数。失败返回null。 * * @param date 日期 * @param dayAmount 增加数量。可为负数 * @return 增加天数后的日期 */ public static Date addDay(Date date, int dayAmount) { return addInteger(date, Calendar.DATE, dayAmount); } /** * 增加日期的小时。失败返回null。 * * @param date 日期 * @param hourAmount 增加数量。可为负数 * @return 增加小时后的日期 */ public static Date addHour(Date date, int hourAmount) { return addInteger(date, Calendar.HOUR_OF_DAY, hourAmount); } /** * 增加日期的分钟。失败返回null。 * * @param date 日期 * @param minuteAmount 增加数量。可为负数 * @return 增加分钟后的日期 */ public static Date addMinute(Date date, int minuteAmount) { return addInteger(date, Calendar.MINUTE, minuteAmount); } /** * 增加日期的秒钟。失败返回null。 * * @param date 日期 * @param secondAmount 增加数量。可为负数 * @return 增加秒钟后的日期 */ public static Date addSecond(Date date, int secondAmount) { return addInteger(date, Calendar.SECOND, secondAmount); } /** * 获取日期的年份。失败返回0。 * * @param date 日期 * @return 年份 */ public static int getYear(Date date) { return getInteger(date, Calendar.YEAR); } /** * 获取日期的月份。失败返回0。 * * @param date 日期 * @return 月份 */ public static int getMonth(Date date) { return getInteger(date, Calendar.MONTH) + 1; } /** * 获取日期的天数。失败返回0。 * * @param date 日期 * @return 天 */ public static int getDay(Date date) { return getInteger(date, Calendar.DATE); } /** * 根据日期获取相差天数 * * @param start * @param end * @return */ public static int getDayBetweenDayNot(Date start, Date end) { long diff = end.getTime() - start.getTime(); long bet = TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS); if (bet > Integer.MAX_VALUE) { throw new IllegalArgumentException("between days overflow"); } return (int) bet; } /** * 根据日期获取相差天数 * * @param start yyyyMMdd * @param end yyyyMMdd * @return */ public static int getDayBetweenDays(Date start, Date end) { long diff = end.getTime() - start.getTime(); long bet = TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS); if (bet > Integer.MAX_VALUE) { throw new IllegalArgumentException("between days overflow"); } return (int) bet + 1; } /** * 获取日期的小时。失败返回0。 * * @param date 日期 * @return 小时 */ public static int getHour(Date date) { return getInteger(date, Calendar.HOUR_OF_DAY); } /** * 获取日期的分钟。失败返回0。 * * @param date 日期 * @return 分钟 */ public static int getMinute(Date date) { return getInteger(date, Calendar.MINUTE); } /** * 获取日期的秒钟。失败返回0。 * * @param date 日期 * @return 秒钟 */ public static int getSecond(Date date) { return getInteger(date, Calendar.SECOND); } /** * 获取距离当天 23.59.59,剩余的秒时间。 * * @return 秒钟 */ public static Long getTimeRemaining() { /** * 当前时间毫秒数 */ long current = System.currentTimeMillis(); /** * 今天零点零分零秒的毫秒数 */ long zero = current / (1000 * 3600 * 24) * (1000 * 3600 * 24) - TimeZone.getDefault().getRawOffset(); /** * 今天23点59分59秒的毫秒数 */ long twelve = zero + 24 * 60 * 60 * 1000 - 1; return (twelve - current) / 1000; } public static List<Date> getDateList(Date deliveryStDt, Date deliveryEdDt) { List<Date> list = new ArrayList<>(); list.add(deliveryStDt); while (true) { Date date = addDay(deliveryStDt, 1); // < if (date != null && date.before(deliveryEdDt)) { list.add(deliveryStDt); } break; } return list; } /** * 当前月最后一天 * * @return */ public static String lastdate() { Calendar cale = Calendar.getInstance(); SimpleDateFormat format = new SimpleDateFormat(DATE_FORMAT_SIX); cale.add(Calendar.MONTH, 1); cale.set(Calendar.DAY_OF_MONTH, 0); return format.format(cale.getTime()); } /** * 当前月第一天 * * @return */ public static String firstdate() { Calendar cale = Calendar.getInstance(); SimpleDateFormat format = new SimpleDateFormat(DATE_FORMAT_SIX); // 获取当前月的第一天 cale.add(Calendar.MONTH, 0); cale.set(Calendar.DAY_OF_MONTH, 1); return format.format(cale.getTime()); } /** * 当前年月 * * @return */ public static String currentdate() { SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月"); return format.format(new Date()); } /** * 当前系统日期T1所在月的下一月的第5日 * * @return */ public static Date nextdate() { Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.MONTH, 1); calendar.set(Calendar.DAY_OF_MONTH, 5); return calendar.getTime(); } /** * 当前系统日期T1所在月的下一月的最后一日 * * @return */ public static Date nextlastdate() { Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.MONTH, 2); calendar.set(Calendar.DAY_OF_MONTH, 0); return calendar.getTime(); } /** * 获得日期的开始时间,即2012-01-01 00:00:00 * * @return */ public static Date getDayStartTime(Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); c.set(Calendar.HOUR_OF_DAY, 0); c.set(Calendar.MINUTE, 0); c.set(Calendar.SECOND, 0); c.set(Calendar.MILLISECOND, 0); return c.getTime(); } /** * 获得日期的结束时间,即2012-01-01 23:59:59 * * @return */ public static Date getDayEndTime(Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); c.set(Calendar.HOUR_OF_DAY, 23); c.set(Calendar.MINUTE, 59); c.set(Calendar.SECOND, 59); return c.getTime(); } /** * 当前系统日期T1所在日初始时间 2020-05-06 * * @return */ public static Date initDate() { Calendar calendar = Calendar.getInstance(); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH); int day = calendar.get(Calendar.DAY_OF_MONTH); calendar.clear(); calendar.set(year, month, day); return calendar.getTime(); } /** * 获得本周的第一天,周一 * * @return */ public static Date getCurrentWeekDayStartTime() { SimpleDateFormat longSdf = new SimpleDateFormat(DATE_FORMAT_FOUR); SimpleDateFormat shortSdf = new SimpleDateFormat(DATE_FORMAT_SIX); Calendar c = Calendar.getInstance(); try { int weekday = c.get(Calendar.DAY_OF_WEEK) - 2; c.add(Calendar.DATE, -weekday); c.setTime(longSdf.parse(shortSdf.format(c.getTime()) + " 00:00:00")); } catch (Exception e) { log.error("getCurrentWeekDayStartTime异常{}", e.toString()); } return c.getTime(); } /** * 获得本周的最后一天,周日 * * @return */ public static Date getCurrentWeekDayEndTime() { SimpleDateFormat longSdf = new SimpleDateFormat(DATE_FORMAT_FOUR); SimpleDateFormat shortSdf = new SimpleDateFormat(DATE_FORMAT_SIX); Calendar c = Calendar.getInstance(); try { int weekday = c.get(Calendar.DAY_OF_WEEK); c.add(Calendar.DATE, 8 - weekday); c.setTime(longSdf.parse(shortSdf.format(c.getTime()) + " 23:59:59")); } catch (Exception e) { log.error("getCurrentWeekDayEndTime异常{}", e.toString()); } return c.getTime(); } /** * 获得本月的开始时间 * * @return */ public static Date getCurrentMonthStartTime() { SimpleDateFormat shortSdf = new SimpleDateFormat(DATE_FORMAT_SIX); Calendar c = Calendar.getInstance(); Date now = null; try { c.set(Calendar.DATE, 1); now = shortSdf.parse(shortSdf.format(c.getTime())); } catch (Exception e) { log.error("getCurrentMonthStartTime异常{}", e.toString()); } return now; } /** * 本月的结束时间 * * @return */ public static Date getCurrentMonthEndTime() { SimpleDateFormat longSdf = new SimpleDateFormat(DATE_FORMAT_FOUR); SimpleDateFormat shortSdf = new SimpleDateFormat(DATE_FORMAT_SIX); Calendar c = Calendar.getInstance(); Date now = null; try { c.set(Calendar.DATE, 1); c.add(Calendar.MONTH, 1); c.add(Calendar.DATE, -1); now = longSdf.parse(shortSdf.format(c.getTime()) + " 23:59:59"); } catch (Exception e) { log.error("getCurrentMonthEndTime异常{}", e.toString()); } return now; } public static Long getCurrentDateCounter(Date date) { if (date == null) { return 0L; } return (date.getTime() - System.currentTimeMillis()) / 1000; }
DateUtil
最新推荐文章于 2023-02-18 18:58:38 发布