时间工具类---LocalDate

2020-06-06  本文已影响0人  java_飞
package com.mmhsy.util;

import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters;
import java.util.Date;


/**
 * @author David
 * @Description: LocalDateUtil工具类
 * @date 2020/6/2 7:07 下午
 */
public class LocalDateUtil {

    /** 格式 :yyyy-MM-dd HH:mm:ss */
    public static final String DATEFORMAT_STR_001 = "yyyy-MM-dd HH:mm:ss";
    /** 格式 :yyyy-MM-dd */
    public static final String DATEFORMAT_STR_002 = "yyyy-MM-dd";

    /** 格式 :MM-dd */
    public static final String DATEFORMAT_STR_003 = "MM-dd";
    /** 格式 :HH:mm:ss */
    public static final String DATEFORMAT_STR_004 = "HH:mm:ss";
    /** 格式 :HH:mm */
    public static final String DATEFORMAT_STR_005 = "HH:mm";

    /** 格式 :yyyyMMddHHmmss */
    public static final String DATEFORMAT_STR_011 = "yyyyMMddHHmmss";
    /** 格式 :yyyyMMdd */
    public static final String DATEFORMAT_STR_012 = "yyyyMMdd";
    /** 格式 :yyyyMM */
    public static final String DATEFORMAT_STR_013 = "yyyyMM";
    /** 格式 :HHmmss */
    public static final String DATEFORMAT_STR_014 = "HHmmss";
    /** 格式 :yyyyMMddHH:mm:ss */
    public static final String DATEFORMAT_STR_015 = "yyyyMMdd HH:mm:ss";
    /** 格式 :yyyyMMddHHmmssSSS */
    public static final String DATEFORMAT_STR_016 = "yyyyMMddHHmmssSSS";
    /** 格式 :yyyyMMddHHmm */
    public static final String DATEFORMAT_STR_017 = "yyyyMMddHHmm";

    /** 格式 :yyyy年MM月dd日 HH时mm分ss秒 */
    public static final String DATEFORMAT_STR_021 = "yyyy年MM月dd日 HH时mm分ss秒";
    /** 格式 :yyyy年MM月dd日 */
    public static final String DATEFORMAT_STR_022 = "yyyy年MM月dd日";
    /** 格式 :MM月dd日 hh:mm */
    public static final String DATEFORMAT_STR_023 = "MM月dd日 hh:mm";
    /** 格式 :yyyy/MM/dd */
    public static final String DATEFORMAT_STR_024 = "yyyy/MM/dd";

    /** 格式 :yyyy-MM */
    public static final String DATEFORMAT_STR_025 = "yyyy-MM";
    /** 格式 :MM月dd日 */
    public static final String DATEFORMAT_STR_026 = "MM月dd日";
    /** 格式 :yyyy-MM-dd HH:mm */
    public static final String DATEFORMAT_STR_027 = "yyyy-MM-dd HH:mm";
    /** 格式 :yyyy */
    public static final String DATEFORMAT_STR_028 = "yyyy";
    /** 格式 :yyyy/MM */
    public static final String DATEFORMAT_STR_029 = "yyyy/MM";
    /** 格式 :yyyyMMddHH */
    public static final String DATEFORMAT_STR_030 = "yyyyMMddHH";


    /**
     * 将long类型的timestamp转为LocalDateTime
     *
     * @param timestamp
     * @return
     */
    public static LocalDateTime getDateTimeOfTimestamp(long timestamp) {
        Instant instant = Instant.ofEpochMilli(timestamp);
        ZoneId zone = ZoneId.systemDefault();
        return LocalDateTime.ofInstant(instant, zone);

    }

    /**
     * 将LocalDateTime转为long类型的timestamp
     *
     * @param localDateTime
     * @return
     */
    public static long getTimestampOfDateTime(LocalDateTime localDateTime) {
        ZoneId zone = ZoneId.systemDefault();
        Instant instant = localDateTime.atZone(zone).toInstant();
        return instant.toEpochMilli();
    }
    /**
     * 获取该时间周的 周一
     * @return
     */
    public static LocalDateTime getMondayOfWeek(LocalDateTime localDateTime) {
        return  localDateTime.with(DayOfWeek.MONDAY);
    }

    /**
     * 获取该时间周的 周末
     * @return
     */
    public static LocalDateTime getSundayOfWeek(LocalDateTime localDateTime) {
        return   localDateTime.with(DayOfWeek.SUNDAY);
    }

    /**
     * 获取该时间月的第一天
     * @return
     */
    public static LocalDateTime getFirstDayOfMonth(LocalDateTime localDateTime) {
        return  localDateTime.with(TemporalAdjusters.firstDayOfMonth());
    }
    /**
     * 获取该时间月的第一天
     * @return
     */
    public static LocalDateTime getLastDayOfCurrentMonth(LocalDateTime localDateTime) {
        return   localDateTime.with(TemporalAdjusters.lastDayOfMonth());
    }

    /**
     * 获取该时间季度第一天
     * @return
     */
    public static LocalDate getFirstDayOfQuarter(LocalDateTime localDateTime) {
        Month month = localDateTime.getMonth();
        Month firstMonthOfQuarter = month.firstMonthOfQuarter();
       return LocalDate.of(localDateTime.getYear(), firstMonthOfQuarter, 1);
    }


    /**
     * 获取该时间季度最后一天
     * @return
     */
    public static LocalDate getLastDayOfQuarter(LocalDateTime localDateTime) {
        Month month = localDateTime.getMonth();
        Month firstMonthOfQuarter = month.firstMonthOfQuarter();
        Month endMonthOfQuarter = Month.of(firstMonthOfQuarter.getValue() + 2);
        LocalDate date = LocalDate.of(localDateTime.getYear(), endMonthOfQuarter, 1);
        return date.with(TemporalAdjusters.lastDayOfMonth());
    }

    /**
     * 获取该时间年的第一天
     * @return
     */
    public static LocalDateTime getFirstDayOfYear(LocalDateTime localDateTime){
       return localDateTime.with(TemporalAdjusters.firstDayOfYear());
    }

    /**
     * 获取该时间年的最后一天
     * @return
     */
    public static LocalDateTime getLastDayOfYear(LocalDateTime localDateTime){
        return localDateTime.with(TemporalAdjusters.lastDayOfYear());
    }

    /**
     * localDate转date
     *
     * @param date
     * @return
     */

    public static Date convertDate(LocalDate date) {
        ZonedDateTime zonedDateTime = date.atStartOfDay(ZoneId.systemDefault());
        return Date.from(zonedDateTime.toInstant());
    }

    /**
     * date 转localDate
     * @param date
     * @return
     */
    public static LocalDate convertLocalDate(Date date){
        return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
    }

    /**
     * localDateTime 转date
     * @param dateTime
     * @return
     */
    public static Date convertDate(LocalDateTime dateTime){
        ZoneId zoneId = ZoneId.systemDefault();
        ZonedDateTime zdt = dateTime.atZone(zoneId);
       return Date.from(zdt.toInstant());
    }
    /**
     * date转localDateTime
     * @param date
     * @return
     */
    public static LocalDateTime convertLocalDateTime(Date date){
        Instant instant = date.toInstant();
        ZoneId zoneId = ZoneId.systemDefault();
       return instant.atZone(zoneId).toLocalDateTime();
    }

    /**
     * 格式化
     *
     * @param dateTime
     * @param pattern
     * @return
     */
    public static String format(LocalDateTime dateTime, String pattern) {
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern(pattern);
        return dtf.format(dateTime);
    }


    /**
     * 格式化日期
     * @param date
     * @param pattern
     * @return
     */
    public static String format(LocalDate date, String pattern) {
        DateTimeFormatter format = DateTimeFormatter.ofPattern(pattern);
        return format.format(date);
    }

    public static void main(String[] args) {
        LocalDateTime time = LocalDateTime.now().withSecond(0).withMinute(0).withNano(0);

        DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss SSS");

        LocalDateTime begin =time.plusDays(-2);

        LocalDateTime end =time;

        long gap = end.toLocalDate().toEpochDay() - begin.toLocalDate().toEpochDay() +1;

        System.out.println(format.format(begin));
        System.out.println(format.format(end));
        begin = begin.plusDays(-gap);
        end = end.plusDays(-gap);


        System.out.println(format(begin,DATEFORMAT_STR_021));
        System.out.println(format(end,DATEFORMAT_STR_021));

        LocalDateTime t =  LocalDateTime.now();



        LocalDateTime dateTime =getDateTimeOfTimestamp(System.currentTimeMillis());

        System.out.println(format.format(t));
        System.out.println(format.format(dateTime));


    }

}

上一篇下一篇

猜你喜欢

热点阅读