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);
|
}
|
}
|