import java.sql.Time; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.TimeZone; public class DateUtil { public static String dateFormat(Date date, String dateFormat) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormat); return simpleDateFormat.format(date); } /** * 得到两个日期间的天数 * * @param startDate 开始日期 * @param endDate 结束 * @return */ public static Long getDays(Date startDate, Date endDate) { long time = startDate.getTime() - endDate.getTime(); long day = time / (1000 * 60 * 60 * 24); return day; } /** * 获取不带时分秒的日期 */ public static Date getDateNoTime(Date date) { String dateStr = DateUtil.dateFormat(new Date(), "yyyy-MM-dd"); return DateUtil.dateStrToDate(dateStr, "yyyy-MM-dd"); } /** * 得到Util类型的Date */ public static Date getUtilDate(Date date) { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); String dateStr = simpleDateFormat.format(date); try { date = simpleDateFormat.parse(dateStr); return date; } catch (ParseException e) { return null; } } public static Date addDay(Date date, int days) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.DATE, 1); return calendar.getTime(); } public static Date dateStrToDate(String dateStr, String dateFormat) { if (ObjectUtil.isEmpty(dateStr)) { return null; } SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormat); try { return simpleDateFormat.parse(dateStr); } catch (ParseException e) { return null; } } public static Date addDays(Date date, int days) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.DATE, days); return new Date(calendar.getTimeInMillis()); } public static Integer weekDay(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); return cal.get(Calendar.DAY_OF_WEEK); } /** * 获得两个日期间的月数 */ public static Integer getMonths(String startDate, String endDate, String format) { SimpleDateFormat sdf = new SimpleDateFormat(format); Date begin = null; Date end = null; try { begin = sdf.parse(startDate); end = sdf.parse(endDate); int months = (end.getYear() - begin.getYear()) * 12 + (end.getMonth() - begin.getMonth()); return months; } catch (ParseException e) { e.printStackTrace(); return null; } } /** * 得到传入日期的月份开始日期 */ public static String getDateMonthStartDate(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH)); return dateFormat(cal.getTime(), "yyyy-MM-dd"); } /** * 获取日期年份 */ public static Integer getYearByDate(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); return cal.get(Calendar.YEAR); } /** * 得到传入日期的月份结束日期 */ public static String getDateMonthEndDate(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH)); return dateFormat(cal.getTime(), "yyyy-MM-dd"); } public static Date formatDateWithUTC(String dateStr) { try { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd‘T‘HH:mm:ss‘Z‘"); df.setTimeZone(TimeZone.getTimeZone("UTC")); return df.parse(dateStr); } catch (Exception e) { e.printStackTrace(); } return null; } public static Time timeStrToTime(String timeStr) { SimpleDateFormat format = new SimpleDateFormat("HH:mm"); java.util.Date d = null; try { d = format.parse(timeStr); } catch (Exception e) { e.printStackTrace(); return null; } return new Time(d.getTime()); } /** * 获取传入日期后的第一个周几 * * @param date * @param weekDay * @return */ public static Date getDateNextWeekDay(Date date, Integer weekDay) { Calendar cal = Calendar.getInstance(); cal.setTime(date); while (cal.get(Calendar.DAY_OF_WEEK) != weekDay) { cal.add(Calendar.DAY_OF_MONTH, 1); } return cal.getTime(); } public static Date getDateWithWeekDay(Integer weekDay) { Calendar cal = Calendar.getInstance(); int dayWeek = cal.get(Calendar.DAY_OF_WEEK); if (weekDay == 1 && dayWeek != 1) { cal.add(Calendar.DAY_OF_WEEK, 8 - dayWeek); } else if (dayWeek == 1 && weekDay != 1) { cal.add(Calendar.DAY_OF_WEEK, weekDay - 8); } else if (weekDay != 1) { cal.add(Calendar.DAY_OF_WEEK, weekDay - dayWeek); } return DateUtil.dateStrToDate(DateUtil.dateFormat(cal.getTime(), "yyyy-MM-dd"), "yyyy-MM-dd"); } /** * 根据日期获取当天是周几 * * @param datetime 日期 * @return 周几 */ public static String dateToWeek(String datetime) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String[] weekDays = {"周日", "周一", "周二", "周三", "周四", "周五", "周六"}; Calendar cal = Calendar.getInstance(); Date date; try { date = sdf.parse(datetime); cal.setTime(date); } catch (ParseException e) { e.printStackTrace(); } int w = cal.get(Calendar.DAY_OF_WEEK) - 1; return weekDays[w]; } }
(全)JAVA时间计算工具类/得到两个日期间的天数/获取不带时分秒的日期/得到Util类型的Date/获得两个日期间的月数/根据日期获取当天是周几
原文:https://www.cnblogs.com/sonder/p/13470262.html