java8的日期工具类(获取当前时间 相隔天数 小时 分钟 秒等处理)

package com.example.list_test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.time.temporal.Temporal;
import java.time.temporal.TemporalAdjusters;
import java.util.Date;

/**
 * 描述:DateTimeUtils
 *
 * @author 何志鹏
 * @ClassName:DateTimeUtils
 * @create 2019-06-05 10:08
 * Version 1.0
 */
public class DateTimeUtils {
    public static final DateTimeFormatter DATETIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
    public static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");


    public static void main(String[] args) {

        System.out.println("============返回当前的日期=============");
        System.out.println(getCurrentLocalDate());
        System.out.println("============返回当前日期时间=============");
        System.out.println(getCurrentLocalDateTime());
        System.out.println("============返回当前日期字符串 yyyyMMdd=============");
        System.out.println(getCurrentDateStr());
        System.out.println("============返回当前日期时间字符串 yyyyMMddHHmmss=============");
        System.out.println(getCurrentDateTimeStr());
        System.out.println("============日期相隔天数=============");
        LocalDate startDateInclusive = LocalDate.of(2019, 06, 04);
        LocalDate endDateExclusive = LocalDate.of(2019, 06, 05);
        System.out.println(periodDays(startDateInclusive, endDateExclusive));
        System.out.println("============日期相隔小时=============");

        String dt = "2019年06月04日";
        String dt2 = "2019年06月05日";
        SimpleDateFormat sd = new SimpleDateFormat("yyyy年MM月dd日");
        try {
            Instant start = sd.parse(dt).toInstant();
            Instant end = sd.parse(dt2).toInstant();
            System.out.println(durationHours(start, end));
            System.out.println("============日期相隔分钟=============");
            System.out.println(durationMinutes(start, end));
            System.out.println("============日期相隔毫秒数=============");
            System.out.println(durationMillis(start, end));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        System.out.println("============是否当天=============");
        LocalDate today = LocalDate.of(2019, 06, 05);
        System.out.println(isToday(today));
        System.out.println("============获取本月的第一天=============");
        System.out.println(getFirstDayOfThisMonth());
        System.out.println("============获取本月的最后一天=============");
        System.out.println(getLastDayOfThisMonth());
        System.out.println("============获取2017-01的第一个周一=============");
        System.out.println(getFirstMonday());
        System.out.println("============获取当前日期的后两周=============");
        System.out.println(getCurDateAfterTwoWeek());
        System.out.println("============获取当前日期的6个月后的日期=============");
        System.out.println(getCurDateAfterSixMonth());
        System.out.println("============获取当前日期的5年后的日期=============");
        System.out.println(getCurDateAfterFiveYear());
        System.out.println("============获取当前日期的20年后的日期=============");
        System.out.println(getCurDateAfterTwentyYear());


    }

    /**
     * 返回当前的日期
     *
     * @return
     */
    public static LocalDate getCurrentLocalDate() {
        return LocalDate.now();
    }

    /**
     * 返回当前日期时间
     *
     * @return
     */
    public static LocalDateTime getCurrentLocalDateTime() {
        return LocalDateTime.now();
    }

    /**
     * 返回当前日期字符串 yyyyMMdd
     *
     * @return
     */
    public static String getCurrentDateStr() {
        return LocalDate.now().format(DATE_FORMATTER);
    }

    /**
     * 返回当前日期时间字符串 yyyyMMddHHmmss
     *
     * @return
     */
    public static String getCurrentDateTimeStr() {
        return LocalDateTime.now().format(DATETIME_FORMATTER);
    }

    public static LocalDate parseLocalDate(String dateStr, String pattern) {
        return LocalDate.parse(dateStr, DateTimeFormatter.ofPattern(pattern));
    }

    public static LocalDateTime parseLocalDateTime(String dateTimeStr, String pattern) {
        return LocalDateTime.parse(dateTimeStr, DateTimeFormatter.ofPattern(pattern));
    }

    /**
     * 日期相隔天数
     *
     * @param startDateInclusive
     * @param endDateExclusive
     * @return
     */
    public static int periodDays(LocalDate startDateInclusive, LocalDate endDateExclusive) {
        return Period.between(startDateInclusive, endDateExclusive).getDays();
    }

    /**
     * 日期相隔小时
     *
     * @param startInclusive
     * @param endExclusive
     * @return
     */
    public static long durationHours(Temporal startInclusive, Temporal endExclusive) {
        return Duration.between(startInclusive, endExclusive).toHours();
    }

    /**
     * 日期相隔分钟
     *
     * @param startInclusive
     * @param endExclusive
     * @return
     */
    public static long durationMinutes(Temporal startInclusive, Temporal endExclusive) {
        return Duration.between(startInclusive, endExclusive).toMinutes();
    }

    /**
     * 日期相隔毫秒数
     *
     * @param startInclusive
     * @param endExclusive
     * @return
     */
    public static long durationMillis(Temporal startInclusive, Temporal endExclusive) {
        return Duration.between(startInclusive, endExclusive).toMillis();
    }

    /**
     * 是否当天
     *
     * @param date
     * @return
     */
    public static boolean isToday(LocalDate date) {
        return getCurrentLocalDate().equals(date);
    }

    /**
     * 获取本月的第一天
     *
     * @return
     */
    public static String getFirstDayOfThisMonth() {
        return getCurrentLocalDate().with(TemporalAdjusters.firstDayOfMonth()).format(DATE_FORMATTER);
    }

    /**
     * 获取本月的最后一天
     *
     * @return
     */
    public static String getLastDayOfThisMonth() {
        return getCurrentLocalDate().with(TemporalAdjusters.lastDayOfMonth()).format(DATE_FORMATTER);
    }

    /**
     * 获取2017-01的第一个周一
     *
     * @return
     */
    public static String getFirstMonday() {
        return LocalDate.parse("2017-01-01").with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY))
                .format(DATE_FORMATTER);
    }

    /**
     * 获取当前日期的后两周
     *
     * @return
     */
    public static String getCurDateAfterTwoWeek() {
        return getCurrentLocalDate().plus(2, ChronoUnit.WEEKS).format(DATE_FORMATTER);
    }

    /**
     * 获取当前日期的6个月后的日期
     *
     * @return
     */
    public static String getCurDateAfterSixMonth() {
        return getCurrentLocalDate().plus(6, ChronoUnit.MONTHS).format(DATE_FORMATTER);
    }

    /**
     * 获取当前日期的5年后的日期
     *
     * @return
     */
    public static String getCurDateAfterFiveYear() {
        return getCurrentLocalDate().plus(5, ChronoUnit.YEARS).format(DATE_FORMATTER);
    }

    /**
     * 获取当前日期的20年后的日期
     *
     * @return
     */
    public static String getCurDateAfterTwentyYear() {
        return getCurrentLocalDate().plus(2, ChronoUnit.DECADES).format(DATE_FORMATTER);
    }

    /**
     * 字符串转时间
     *
     * @return
     */
    public static LocalDate stringToDate(String time) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        return LocalDate.parse(time, formatter);
    }

}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值