123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- package com.emato.cus.supervise.util;
- import java.time.*;
- import java.time.format.DateTimeFormatter;
- import java.time.temporal.ChronoUnit;
- import java.time.temporal.TemporalUnit;
- import java.util.Date;
- /**
- * @author Scott Chen
- * @version 1.0
- * 2017-10-28 10:47
- */
- public class LocalDateTimeUtils {
- public static final String DATA_TIME_HYPHEN = "yyyy-MM-dd HH:mm:ss";
- private LocalDateTimeUtils() { }
- //获取当前时间的LocalDateTime对象
- //LocalDateTime.now();
- //根据年月日构建LocalDateTime
- //LocalDateTime.of();
- //比较日期先后
- //LocalDateTime.now().isBefore(),
- //LocalDateTime.now().isAfter(),
- //Date转换为LocalDateTime
- public static LocalDateTime convertDateToLDT(Date date) {
- return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
- }
- //LocalDateTime转换为Date
- public static Date convertLDTToDate(LocalDateTime time) {
- return Date.from(time.atZone(ZoneId.systemDefault()).toInstant());
- }
- //获取指定日期的毫秒
- public static Long getMilliByTime(LocalDateTime time) {
- return time.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
- }
- //获取指定日期的秒
- public static Long getSecondsByTime(LocalDateTime time) {
- return time.atZone(ZoneId.systemDefault()).toInstant().getEpochSecond();
- }
- //获取指定时间的指定格式
- public static String formatTime(LocalDateTime time, String pattern) {
- return time.format(DateTimeFormatter.ofPattern(pattern));
- }
- //获取当前时间的指定格式
- public static String formatNow(String pattern) {
- return formatTime(LocalDateTime.now(), pattern);
- }
- //日期加上一个数,根据field不同加不同值,field为ChronoUnit.*
- public static LocalDateTime plus(LocalDateTime time, long number, TemporalUnit field) {
- return time.plus(number, field);
- }
- //日期减去一个数,根据field不同减不同值,field参数为ChronoUnit.*
- public static LocalDateTime minu(LocalDateTime time, long number, TemporalUnit field) {
- return time.minus(number, field);
- }
- /**
- * 获取两个日期的差 field参数为ChronoUnit.*
- * @param startTime
- * @param endTime
- * @param field 单位(年月日时分秒)
- * @return
- */
- public static long betweenTwoTime(LocalDateTime startTime, LocalDateTime endTime, ChronoUnit field) {
- Period period = Period.between(LocalDate.from(startTime), LocalDate.from(endTime));
- if (field == ChronoUnit.YEARS) {
- return period.getYears();
- }
- if (field == ChronoUnit.MONTHS) {
- return period.getYears() * 12 + period.getMonths();
- }
- return field.between(startTime, endTime);
- }
- //获取一天的开始时间,2017,7,22 00:00
- public static LocalDateTime getDayStart(LocalDateTime time) {
- return time.withHour(0)
- .withMinute(0)
- .withSecond(0)
- .withNano(0);
- }
- //获取一天的结束时间,2017,7,22 23:59:59.999999999
- public static LocalDateTime getDayEnd(LocalDateTime time) {
- return time.withHour(23)
- .withMinute(59)
- .withSecond(59)
- .withNano(999999999);
- }
- /**
- * String转LocalTime
- * @param src
- * @param formatter
- * @return
- */
- public static LocalTime stringToLocalTime(String src, DateTimeFormatter formatter) {
- return LocalTime.parse(src, formatter);
- }
- }
|