Java计算两个日期相差的天数
Java计算两个日期相差的天数
1.日期转换工具类示例代码
/** * Description: 日期工具类 */ public class MyDateUtil { /** * 将指定的日期字符串转换成日期 * @param dateStr 日期字符串 * @param pattern 格式 * @return 日期对象 */ public static Date parseDate(String dateStr, String pattern) { SimpleDateFormat sdf = new SimpleDateFormat(pattern); Date date; try { date = sdf.parse(dateStr); } catch (ParseException e) { throw new RuntimeException("日期转化错误"); } return date; } /** * 将指定的日期格式化成指定的日期字符串 * @param date 日期对象 * @param pattern 格式 * @return 格式化后的日期字符串 */ public static String dateFormate(Date date, String pattern) { SimpleDateFormat sdf = new SimpleDateFormat(pattern); String dateStr; if(date == null) { return ""; } dateStr = sdf.format(date); return dateStr; } /** * 查询指定日期前后指定的天数 * @param date 日期对象 * @param days 天数 * @return 日期对象 */ public static Date incr(Date date, int days) { if (date == null){ return null; } Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.DAY_OF_MONTH, days); return calendar.getTime(); } /** * 将LocalDate日期转化成Date * @param localDate LocalDate对象 * @return Date对象 */ public static Date localDateToDate(LocalDate localDate) { if (localDate == null) { return null; } ZoneId zoneId = ZoneId.systemDefault(); ZonedDateTime zonedDateTime = localDate.atStartOfDay(zoneId); Date date = Date.from(zonedDateTime.toInstant()); return date; } /** * 将Date转成LocalDate对象 * @param date Date对象 * @return LocalDate对象 */ public static LocalDate dateToLocalDate(Date date) { if (date == null) { return null; } ZoneId zoneId = ZoneId.systemDefault(); Instant instant = date.toInstant(); LocalDate localDate = instant.atZone(zoneId).toLocalDate(); return localDate; } }
2.日期计算示例代码
/** * Description: 日期测试类 */ public class DateTest { /** * 计算连个日期之间相差的天数 */ @Test public void testBetweenDays(){ // 日期字符串 String dateStr1 = "2018-12-27 17:07:07"; String dateStr2 = "2018-12-31 00:00:00"; // 获取日期 Date date1 = MyDateUtil.parseDate(dateStr1, "yyyy-MM-dd HH:mm:ss"); Date date2 = MyDateUtil.parseDate(dateStr2, "yyyy-MM-dd HH:mm:ss"); // 获取相差的天数 Calendar calendar = Calendar.getInstance(); calendar.setTime(date1); long timeInMillis1 = calendar.getTimeInMillis(); calendar.setTime(date2); long timeInMillis2 = calendar.getTimeInMillis(); long betweenDays = (timeInMillis2 - timeInMillis1) / (1000L*3600L*24L); System.out.println(betweenDays); } /** * 计算连个日期之间相差的天数 */ @Test public void testBetweenDays2(){ // 日期字符串 String dateStr1 = "2018-12-27 17:07:07"; String dateStr2 = "2018-12-31 00:00:00"; // 获取日期 Date date1 = MyDateUtil.parseDate(dateStr1, "yyyy-MM-dd HH:mm:ss"); Date date2 = MyDateUtil.parseDate(dateStr2, "yyyy-MM-dd HH:mm:ss"); long betweenDays = (date2.getTime() - date1.getTime()) / (1000L*3600L*24L); System.out.println(betweenDays); } }