zoukankan      html  css  js  c++  java
  • java8时间工具类

    import java.time.*;
    import java.time.format.DateTimeFormatter;
    import java.time.temporal.TemporalUnit;
    import java.util.Date;
    
    /**
     * Java8 时间处理
     * @author: BuZheng
     * @date: 2020-01-16 下午 3:25 
     *
     */
    public class DateTool {
    
        /**
         * locaDate判断两个时间是否相等
         *
         * @param startTime     时间1
         * @param endTime       时间2
         * @return: boolean
         * @author: BuZheng
         **/
        public  static boolean  localDateEquals(LocalDate startTime, LocalDate endTime){
            if(startTime.equals(endTime)){
                return true;
            }
            return false;
        }
    
        /**
         * locaDateTime判断两个时间是否相等
         *
         * @param startTime     时间1
         * @param endTime       时间2
         * @return: boolean
         * @author: BuZheng
         **/
        public static boolean  locaDateTimeEquals(LocalDateTime startTime, LocalDateTime endTime){
            if(startTime.equals(endTime)){
                return true;
            }
            return false;
        }
    
        /**
         * 判断是否是生日  ( Date )
         *
         * @param birthday      生日
         * @param referDay      参照时间
         * @return: boolean
         * @author: BuZheng
         **/
        public static  boolean isBirthdayByDate(Date birthday, Date referDay){
            LocalDate localDateBirthday = date2LocalDate(birthday);
            LocalDate localDateReferDay = date2LocalDate(referDay);
            //生日时间 x月x日
            MonthDay birthdayTime = MonthDay.of(localDateBirthday.getMonth(), localDateBirthday.getDayOfMonth());
            //参照时间 x月x日
            MonthDay referMonthDay = MonthDay.from(localDateReferDay);
            if(birthdayTime.equals(referMonthDay)){
                return true;
            }
            return false;
        }
    
        /**
         * 判断是否是生日  ( LocalDate )
         *
         * @param birthday      生日
         * @param referDay      参照时间
         * @return: boolean
         * @author: BuZheng
         **/
        public static  boolean isBirthdayByLocalDate(LocalDate birthday, LocalDate referDay){
            //生日时间 x月x日
            MonthDay birthdayTime = MonthDay.of(birthday.getMonth(), birthday.getDayOfMonth());
            //参照时间 x月x日
            MonthDay referMonthDay = MonthDay.from(referDay);
            if(birthdayTime.equals(referMonthDay)){
                return true;
            }
            return false;
        }
    
        /**
         * 时间转换(LocalDateTime ==》 Date)
         * @param nowDayStart   当前时间
         * @return: java.util.Date
         * @author: BuZheng
         **/
        public static Date localDateTime2Date(LocalDateTime nowDayStart) {
            ZoneId zoneId = ZoneId.systemDefault();
            ZonedDateTime zdt = nowDayStart.atZone(zoneId);
            return Date.from(zdt.toInstant());
        }
    
        /**
         * 时间转换(LocalDate ==》 Date)
         *
         * @param localDate
         * @return: java.util.Date
         * @author: BuZheng
         **/
        public static Date localDate2Date(LocalDate localDate) {
            if(null == localDate) {
                return null;
            }
            ZonedDateTime zonedDateTime = localDate.atStartOfDay(ZoneId.systemDefault());
            return Date.from(zonedDateTime.toInstant());
        }
    
        /**
         * 时间转换(Date ==》 LocalDateTime)
         *
         * @param date      时间
         * @return: java.time.LocalDateTime
         * @author: BuZheng
         **/
        public static LocalDateTime date2LocalDateTime(Date date){
            //An instantaneous point on the time-line.(时间线上的一个瞬时点。)
            Instant instant = date.toInstant();
            //A time-zone ID, such as {@code Europe/Paris}.(时区)
            ZoneId zoneId = ZoneId.systemDefault();
            LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime();
    
            return localDateTime;
        }
    
        /**
         * 时间转换(Date ==》 LocalDate)
         *
         * @param date      时间
         * @return: java.time.LocalDateTime
         * @author: BuZheng
         **/
        public static LocalDate date2LocalDate(Date date){
            //An instantaneous point on the time-line.(时间线上的一个瞬时点。)
            Instant instant = date.toInstant();
            //A time-zone ID, such as {@code Europe/Paris}.(时区)
            ZoneId zoneId = ZoneId.systemDefault();
            LocalDate localDate = instant.atZone(zoneId).toLocalDate();
    
            return localDate;
        }
    
        /**
         * 时间增加
         *
         * @param date      开始时间
         * @param num      数量
         * @param temporalUnit  以什么形式相加( ChronoUnit.WEEKS/DAYS)
         * @return: java.util.Date
         * @author: BuZheng
         **/
        public static Date datePlus(Date date, int num, TemporalUnit temporalUnit){
            LocalDateTime localDateTime = date2LocalDateTime(date);
            return localDateTime2Date(localDateTime.plus(num, temporalUnit));
        }
    
        /**
         * 时间减少
         *
         * @param date      开始时间
         * @param num      数量
         * @param temporalUnit  以什么形式减少( ChronoUnit.WEEKS/DAYS)
         * @return: java.util.Date
         * @author: BuZheng
         **/
        public static Date dateMinus(Date date, int num, TemporalUnit temporalUnit){
            LocalDateTime localDateTime = date2LocalDateTime(date);
            return localDateTime2Date(localDateTime.minus(num, temporalUnit));
        }
    
        /**
         * 获取当前时间戳
         * @author: BuZheng
         */
        public static long nowMillis(){
            return Clock.systemUTC().millis();
        }
    
        /**
         * 获取昨天日期
         * @param toDay      日期
         * @return: java.util.Date
         * @author: BuZheng
         */
        public static Date getYesterday(Date toDay){
    
            return localDateTime2Date(date2LocalDateTime(toDay).minusDays(1));
        }
    
    
        /**
         * 判断是否是闰年
         * @param time      日期
         * @return: boolean
         * @author: BuZheng
         **/
        public static boolean isLeapYear(Date time){
            return date2LocalDate(time).isLeapYear();
        }
    
        /**
         * 获取相差的时间(通过Period获取年月日)
         *
         * @param startDate
         * @param endDate
         * @return: java.time.Period
         * @author: BuZheng
         **/
        public static Period getDiffer(Date startDate, Date endDate){
            return Period.between(date2LocalDate(endDate), date2LocalDate(startDate));
        }
    
        /**
         * 字符串转成日期(年-月-日)
         *  字符串格式必须与需转格式一致!
         * @param timeStr      日期字符串
         * @param pattern      需转换的日期格式
         * @return: java.util.Date
         * @author: BuZheng
         **/
        public static Date string2Date(String timeStr, String pattern){
            DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(pattern);
            LocalDate parse = LocalDate.parse(timeStr, dateTimeFormatter);
            return  localDate2Date(parse);
        }
    
        /**
         * 字符串转成日期(年-月-日 时-分-秒)
         *  字符串格式必须与需转格式一致!
         * @param timeStr      日期字符串
         * @param pattern      需转换的日期格式
         * @return: java.util.Date
         * @author: BuZheng
         **/
        public static Date string2DateTime(String timeStr, String pattern){
            DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(pattern);
            LocalDateTime parse = LocalDateTime.parse(timeStr, dateTimeFormatter);
            return  localDateTime2Date(parse);
        }
    
        /**
         * 日期转字符串(年-月-日)
         *  字符串格式必须与需转格式一致!
         *
         * @param date      日期
         * @param pattern      需转换的日期格式
         * @return: java.lang.String
         * @author: BuZheng
         **/
        public static String date2String(Date date, String pattern){
            DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(pattern);
            String format = date2LocalDate(date).format(dateTimeFormatter);
            return  format;
        }
    
        /**
         * 日期转字符串(年-月-日 时-分-秒)
         *  字符串格式必须与需转格式一致!
         *
         * @param date      日期
         * @param pattern      需转换的日期格式
         * @return: java.lang.String
         * @author: BuZheng
         **/
        public static String dateTime2String(Date date, String pattern){
            DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(pattern);
            String format = date2LocalDateTime(date).format(dateTimeFormatter);
            return  format;
        }
    
        /**
         * 获取传入日期最小时间
         *
         * @param date      日期
         * @return: java.util.Date
         * @author: BuZheng
         **/
        public static Date getDateMin(Date date){
            LocalDateTime localDateTime = date2LocalDate(date).atTime(LocalTime.MIN);
            return localDateTime2Date(localDateTime);
        }
    
        /**
         * 获取传入日期最大时间
         *
         * @param date      日期
         * @return: java.util.Date
         * @author: BuZheng
         **/
        public static Date getDateMax(Date date){
            LocalDateTime localDateTime = date2LocalDate(date).atTime(LocalTime.MAX);
            return localDateTime2Date(localDateTime);
        }
    
    
    
        /**
         * 时间戳转时间(Date)
         *
         * @param time  时间
         * @return: java.util.Date
         * @author: BuZheng
         **/
        public  static Date timestamp2Date(String time){
            Instant timestamp = Instant.ofEpochMilli(Long.parseLong(time));
            ZonedDateTime losAngelesTime = timestamp.atZone(ZoneId.of("Asia/Shanghai"));
            LocalDateTime localDateTime = losAngelesTime.toLocalDateTime();
            return localDateTime2Date(localDateTime);
        }
    
        /**
         * 两个时间戳相差几天
         *
         * @param startTime     开始时间
         * @param endTime       结束时间
         * @return: int
         * @author: BuZheng
         **/
        public static long differDays(Long startTime, Long endTime){
            //获取相差时间戳
            long abs = Math.abs(endTime - startTime);
            long days = abs / (3600 * 24 * 1000);
            return days;
        }
    
    
    }
  • 相关阅读:
    一、zuul如何路由到上游服务器
    一、hystrix如何集成在openfeign中使用
    一、ribbon如何集成在openfeign中使用
    二、openfeign生成并调用客户端动态代理对象
    一、openfeign的自动配置
    BootStrap【一、概述】
    JavaSpring【七、AspectJ】
    JavaSpring【六、AOP的API】
    JavaSpring【五、AOP基础】
    目录整理
  • 原文地址:https://www.cnblogs.com/buzheng/p/12520012.html
Copyright © 2011-2022 走看看