java 日期处理
java的localDate与Date等相互转换
-
java
import java.time.*; import java.util.Date; /** * @author xxx * @create 2018/08/14 14:21 * @description 日期转换工具类 */ public class LocalDateUtil { /** * java.util.Date --> java.time.LocalDateTime */ public static LocalDateTime parseDateToLocalDateTime(Date date) { Instant instant = date.toInstant(); ZoneId zone = ZoneId.systemDefault(); return LocalDateTime.ofInstant(instant, zone); } /** * java.util.Date --> java.time.LocalDate */ public static LocalDate parseDateToLocalDate(Date date) { Instant instant = date.toInstant(); ZoneId zone = ZoneId.systemDefault(); return LocalDateTime.ofInstant(instant, zone).toLocalDate(); } /** * java.util.Date --> java.time.LocalTime */ public static LocalTime parseDateToLocalTime(Date date) { Instant instant = date.toInstant(); ZoneId zone = ZoneId.systemDefault(); return LocalDateTime.ofInstant(instant, zone).toLocalTime(); } /** * java.time.LocalDateTime --> java.util.Date */ public static Date parseLocalDateTimeToDate(LocalDateTime localDateTime) { ZoneId zone = ZoneId.systemDefault(); return Date.from(localDateTime.atZone(zone).toInstant()); } /** * java.time.LocalDate --> java.util.Date */ public static Date parseLocalDateToDate(LocalDate localDate) { ZoneId zone = ZoneId.systemDefault(); return Date.from(localDate.atStartOfDay().atZone(zone).toInstant()); } }
其他
-
计算两个日期的月数差,多余一天算一个月
/** * 获取两个日期相差的月数 * * @param max 较大的日期 * @param min 较小的日期 * @return 如果 max > min 返回月数差, 否则返回 0 */ public static int getMonthDiff(Date max, Date min) { LocalDate localDateMin = LocalDateUtil.parseDateToLocalDate(min); LocalDate localDateMax = LocalDateUtil.parseDateToLocalDate(max); // ChronoUnit.MONTHS.between(localDateMin, localDateMax); Period period = Period.between(localDateMin, localDateMax); int years = period.getYears(); int months = period.getMonths(); int days = period.getDays(); int sum = 0; if (years > 0) { sum = 12 * years; } if (months > 0) { sum += months; } if (days > 0) { sum += 1; // 存在天数差,算成整一个月 } System.out.println("years:" + years + ",months:" + months + ",days:" + days); return sum; }