package com.qianwen.mdc.collect.utils; import java.time.DayOfWeek; import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.Period; import java.time.ZoneId; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; import java.time.temporal.TemporalAccessor; import java.time.temporal.TemporalAdjusters; import java.time.temporal.TemporalUnit; import java.time.temporal.WeekFields; import java.util.Date; public class LocalDateTimeUtils { public static String pattern = "yyyy-MM-dd"; public static Long getSecondsByTime(LocalDateTime time) { return Long.valueOf(time.atZone(ZoneId.systemDefault()).toInstant().getEpochSecond()); } public static String formatTime(LocalDateTime time, String pattern2) { return time.format(DateTimeFormatter.ofPattern(pattern2)); } public static String formatTimeLocalDate(LocalDate date, String pattern2) { return date.format(DateTimeFormatter.ofPattern(pattern2)); } public static String formatNow(String pattern2) { return formatTime(LocalDateTime.now(), pattern2); } public static LocalDateTime plus(LocalDate localDate, long number, TemporalUnit field) { return localDate.atStartOfDay().plus(number, field); } public static Integer getWeek(LocalDate time) { WeekFields weekFields = WeekFields.of(DayOfWeek.MONDAY, 1); return Integer.valueOf(time.get(weekFields.weekOfYear())); } public static Integer getMonth(LocalDate time) { return Integer.valueOf(time.getMonth().getValue()); } public static Integer getYear(LocalDate time) { return Integer.valueOf(time.getYear()); } public static long betweenTwoTime(LocalDateTime startTime, LocalDateTime endTime, ChronoUnit field) { Period period = Period.between(LocalDate.from((TemporalAccessor) startTime), LocalDate.from((TemporalAccessor) endTime)); if (field == ChronoUnit.YEARS) { return period.getYears(); } if (field == ChronoUnit.MONTHS) { return (period.getYears() * 12) + period.getMonths(); } return field.between(startTime, endTime); } public static LocalDateTime getDayStart(LocalDateTime time) { return time.withHour(0).withMinute(0).withSecond(0).withNano(0); } public static LocalDateTime getDayEnd(LocalDateTime time) { return time.withHour(23).withMinute(59).withSecond(59).withNano(999999999); } public static Integer getDayOfYear(Integer year) { return Integer.valueOf(LocalDate.of(year.intValue(), 1, 1).isLeapYear() ? 366 : 365); } public static Integer getDifference(LocalDate startDate, LocalDate endDate) { Long l = Long.valueOf(endDate.toEpochDay() - startDate.toEpochDay()); Integer difference = Integer.valueOf(Integer.parseInt(l.toString())); return difference; } public static LocalDate getLastDayOfYear(LocalDate date) { LocalDate lastDayOfYear = date.with(TemporalAdjusters.lastDayOfYear()); return lastDayOfYear; } public static Date LocalDateTimeToDate(LocalDateTime localDateTime) { ZoneId zoneId = ZoneId.systemDefault(); ZonedDateTime zdt = localDateTime.atZone(zoneId); Date date = Date.from(zdt.toInstant()); return date; } public static Date LocalDateToDate(LocalDate localDate) { ZoneId zone = ZoneId.systemDefault(); Instant instant = localDate.atStartOfDay().atZone(zone).toInstant(); Date date = Date.from(instant); return date; } public static Date LocalTimeToDate(LocalTime localTime) { LocalDate localDate = LocalDate.now(); LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime); ZoneId zone = ZoneId.systemDefault(); Instant instant = localDateTime.atZone(zone).toInstant(); Date date = Date.from(instant); return date; } public static LocalDateTime DateToLocalDateTime(Date date) { Instant instant = date.toInstant(); ZoneId zone = ZoneId.systemDefault(); LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone); return localDateTime; } public static LocalDate DateToLocalDate(Date date) { Instant instant = date.toInstant(); ZoneId zone = ZoneId.systemDefault(); LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone); LocalDate localDate = localDateTime.toLocalDate(); return localDate; } public static LocalTime DateToLocalTime(Date date) { Instant instant = date.toInstant(); ZoneId zone = ZoneId.systemDefault(); LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone); LocalTime localTime = localDateTime.toLocalTime(); return localTime; } public static LocalDateTime parseLocalDateTime(String time) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); return LocalDateTime.of(LocalDate.parse(time, formatter), LocalTime.MIN); } }