public class DateUtil { private static final String DEFAULT_PATTERN = "yyyy-MM-dd HH:mm:ss"; /** * 获取当前的系统时间 * @return 系统时间 */ public static Date currentDate(){ return new Date(); } /** * 将 date 格式的字符串转换为一个日期对象 * @param dateStr date 格式的字符串 * @param pattern 日期字符串的格式 * @return 日期对象 */ public static Date str2Date(String dateStr,String pattern) { try { SimpleDateFormat sf = new SimpleDateFormat(pattern); return sf.parse(dateStr); } catch (ParseException e) { throw new RuntimeException("字符串转换日期出错,字符串:" + dateStr+",格式为:" + pattern,e); } } /** * 将 date 格式的字符串转换为一个日期对象 * 使用默认的格式: yyyy-MM-dd HH:mm:ss * @param dateStr date 格式的字符串 * @return 日期对象 */ public static Date str2Date(String dateStr) { return str2Date(dateStr,DEFAULT_PATTERN); } /** * 将日期转为字符串 * @param date 日期 * @param pattern 日期格式 * @return 转换后的字符串 */ public static String date2String( Date date , String pattern){ SimpleDateFormat sf= new SimpleDateFormat(pattern); return sf.format(date); } /** * 将日期转为字符串 * 使用默认的格式: yyyy-MM-dd HH:mm:ss * @param date 日期 * @return 转换后的字符串 */ public static String date2String(Date date){ return date2String(date,DEFAULT_PATTERN); } /** * 获取当前系统时间的下一天的日期 * @return 日期对象 */ public static Date getNextDay(){ return getNextDay(currentDate(),1); } /** * 获取特定日期的下一天 * @param oriDate 某个日期 * @return 下一天的日期 */ public static Date getNextDay(Date oriDate){ return getNextDay(oriDate,1); } /** * 获取指定日期的指定天数后的日期 * @param oriDate 原始日期 * @param amount 天数 * @return 新日期 */ public static Date getNextDay(Date oriDate,int amount){ Calendar c = Calendar.getInstance(); c.setTime(oriDate); c.add(Calendar.DAY_OF_MONTH,amount); return c.getTime(); } /** * 获取当前系统日期的指定天数后的日期 * @param amount 天数 * @return 新日期 */ public static Date getNextDay(int amount){ return getNextDay(currentDate(),amount); } /** * 获取年份 * @param date 日期 * @return 年份 */ public static Integer getYear(Date date){ Calendar c = Calendar.getInstance(); c.setTime(date); return c.get(Calendar.YEAR); } /** * 获取月份 * @param date 日期 * @return 月份 */ public static Integer getMonth(Date date){ Calendar c = Calendar.getInstance(); c.setTime(date); return c.get(Calendar.MONTH) + 1; } /** * 获取日期 * @param date 日期 * @return 日期 */ public static Integer getDate(Date date){ Calendar c = Calendar.getInstance(); c.setTime(date); return c.get(Calendar.DAY_OF_MONTH); } /** * 获取小时 * @param date 日期 * @return 小时 */ public static Integer getHour(Date date){ Calendar c = Calendar.getInstance(); c.setTime(date); return c.get(Calendar.HOUR_OF_DAY); } /** * 获取分钟 * @param date 日期 * @return 分钟 */ public static Integer getMinute(Date date){ Calendar c = Calendar.getInstance(); c.setTime(date); return c.get(Calendar.MINUTE); } /** * 获取秒数 * @param date 日期 * @return 秒数 */ public static Integer getSecond(Date date){ Calendar c = Calendar.getInstance(); c.setTime(date); return c.get(Calendar.SECOND); } /** * 获取两个日期相差的天数: 精确到秒 * @param startDate 起始日期 7.22 15 * @param endDate 终止日期 7.24 16 * @return 天数 */ public static Integer getDurationWithSecond(Date startDate,Date endDate){ int duration = 0; while (startDate.before(endDate)){ startDate = getNextDay(startDate); duration++; } return duration; } /** * 获取两个日期相差的天数: 精确到天 * @param startDate 起始日期 7.22 13 * @param endDate 终止日期 7.24 15 * @return 天数 */ public static Integer getDurationWithDay(Date startDate,Date endDate){ Calendar start = Calendar.getInstance(); Calendar end = Calendar.getInstance(); clearTime(start); clearTime(end); return getDurationWithSecond(start.getTime(),end.getTime()); } /** * 获取一个日期 * @param year 年 * @param month 月 * @param day 日 * @return */ public static Date getDate(int year,int month,int day){ Calendar c = Calendar.getInstance(); c.set(year, month-1, day,0,0,0); return c.getTime(); } /** * 获取一个日期 * @param year 年 * @param month 月 * @param day 日 * @param hour 时 * @param minute 分 * @param second 秒 * @return */ public static Date getDate(int year,int month,int day,int hour,int minute,int second){ Calendar c = Calendar.getInstance(); c.set(year, month-1, day, hour, minute, second); return c.getTime(); } private static void clearTime(Calendar calendar){ calendar.set(Calendar.HOUR,0); calendar.set(Calendar.MINUTE,0); calendar.set(Calendar.SECOND,0); } }
Java的日期工具类
最新推荐文章于 2023-07-19 15:54:53 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)