package com.xc.test.dateoperation; import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.commons.lang3.time.DateUtils; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Iterator; public class DateMain { public static void main(String[] args) throws ParseException { Date now = new Date(); // System.out.println("now:" + now);// Fri Aug 16 14:51:39 CST 2019 //日期add { // 封装Calendar类add方法 { Date date = add(now, Calendar.DAY_OF_MONTH, 1);//增加天数 // System.out.println("date:" + date);// Sat Aug 17 14:51:39 CST 2019 Date date2 = add(now, Calendar.MINUTE, 1);//增加分钟 // System.out.println("date2:" + date2);// Fri Aug 16 14:52:39 CST 2019 } // 通过DateUtils工具类 { Date date = DateUtils.addDays(now, 1);//增加天数 // System.out.println("date:" + date);// Sat Aug 17 14:51:39 CST 2019 Date date2 = DateUtils.addMinutes(now, 1);//增加分钟 // System.out.println("date2:" + date2);// Fri Aug 16 14:52:39 CST 2019 } } //判断2个日期是不是同一天 { // 判断Calendar的年,年所在的天数是否相等 boolean sameDay = isSameDay(now, now); // System.out.println(sameDay);//true // 通过DateUtils工具类 boolean sameDay2 = DateUtils.isSameDay(now, now); // System.out.println(sameDay2);//true } /* 获取一段日期 RANGE_WEEK_SUNDAY 从周日开始获取一周日期 RANGE_WEEK_MONDAY 从周一开始获取一周日期 RANGE_WEEK_RELATIVE 从当前时间开始获取一周日期 RANGE_WEEK_CENTER 以当前日期为中心获取一周日期 RANGE_MONTH_SUNDAY 从周日开始获取一个月日期 RANGE_MONTH_MONDAY 从周一开始获取一个月日期 */ Iterator<Calendar> iterator = DateUtils.iterator(now, DateUtils.RANGE_MONTH_SUNDAY); while (iterator.hasNext()) { Calendar next = iterator.next(); // System.out.println("next:" + next); String format = DateFormatUtils.format(next, "yyyy-MM-dd HH:mm:ss"); // System.out.println("format:" + format); } // 解析时间字符串 { // 使用SimpleDateFormat类 { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = sdf.parse("2019-08-16 15:36:16"); // System.out.println("date:" + date);//Fri Aug 16 15:36:16 CST 2019 } // 通过DateUtils工具类 { Date date = DateUtils.parseDate("2019-08-16 15:36:16", "yyyy-MM-dd HH:mm:ss"); // System.out.println("date:" + date);//Fri Aug 16 15:36:16 CST 2019 } } // 设置日期时间 { // 封装Calendar的set方法 { Date date = set(now, Calendar.DAY_OF_MONTH, 1); // System.out.println(date);//Thu Aug 01 16:04:08 CST 2019 String format = DateFormatUtils.format(date, "yyyy-MM-dd HH:mm:ss"); // System.out.println("format:" + format);//2019-08-01 16:04:08 } // 通过DateUtils工具类 { Date date = DateUtils.setDays(now, 1); // System.out.println(date);//Thu Aug 01 16:04:08 CST 2019 String format = DateFormatUtils.format(date, "yyyy-MM-dd HH:mm:ss"); // System.out.println("format:" + format);//2019-08-01 16:04:08 } } //计算两个时间隔多少天 { int intervalDate = intervalDate(now, now); // System.out.println("intervalDate:" + intervalDate);//0 } } // 计算两个时间隔多少天 public static int intervalDate(Date startDate, Date endDate) { long startTime2 = startDate.getTime(); long endTime2 = endDate.getTime(); int amount = (int) ((endTime2 - startTime2) / (1000 * 3600 * 24)); return amount; } /** * 设置日期时间 * * @param date 待修改的日期 * @param calendarField 设置的单位 * @param amount 设置的数值 * @return Date 设置后的日期 */ private static Date set(Date date, int calendarField, int amount) { Calendar c = Calendar.getInstance(); c.setLenient(false); c.setTime(date); c.set(calendarField, amount); return c.getTime(); } /** * 判断2个日期是不是同一天 * * @param date1 待比较日期1 * @param date2 待比较日期2 * @return boolean */ public static boolean isSameDay(Date date1, Date date2) { Calendar cal1 = Calendar.getInstance(); cal1.setTime(date1); Calendar cal2 = Calendar.getInstance(); cal2.setTime(date2); return cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR) && cal1.get(Calendar.DAY_OF_YEAR) == cal2.get(Calendar.DAY_OF_YEAR); } /** * 日期add * * @param date 待增日期 * @param calendarField 增加单位 * @param amount 增加数量 * @return Date 增加后日期 */ private static Date add(final Date date, int calendarField, int amount) { Calendar c = Calendar.getInstance(); c.setTime(date); c.add(calendarField, amount); return c.getTime(); } }