Java8获取(天,周,月,季度,年)的起止时间

运行结果:

当前时间:2021-02-22 10:14:51
今天开始时间:2021-02-22 00:00:00
今天结束时间:2021-02-22 23:59:59
昨天开始时间:2021-02-21 00:00:00
昨天结束时间:2021-02-21 23:59:59
最近7天开始时间:2021-02-15 00:00:00
最近7天结束时间:2021-02-15 23:59:59
最近30天开始时间:2021-01-23 00:00:00
最近30天结束时间:2021-01-23 23:59:59
最近90天开始时间:2020-11-24 00:00:00
最近90天结束时间:2020-11-24 23:59:59
最近1年开始时间:2020-02-22 00:00:00
最近1年结束时间:2020-02-22 23:59:59
本周起开始时间:2021-02-22 00:00:00
本周起结束时间:2021-02-28 23:59:59
本月开始时间:2021-02-01 00:00:00
本月结束时间:2021-02-28 23:59:59
上个月开始时间:2021-01-01 00:00:00
上个月结束时间:2021-01-31 23:59:59
本季度起开始时间:2021-01-01 00:00:00
本季度起结束时间:2021-03-31 23:59:59
今年起开始时间:2021-01-01 00:00:00
今年起结束时间:2021-12-31 23:59:59

package cn.com.javakf.util;

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

public class DateUtil {

    private static DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

    public static void main(String[] args) throws Exception {
        System.out.println("当前时间:" + getCurrentTime());
        System.out.println("今天开始时间:" + getTodayStartTime());
        System.out.println("今天结束时间:" + getTodayEndTime());
        System.out.println("昨天开始时间:" + getYesterdayStartTime());
        System.out.println("昨天结束时间:" + getYesterdayEndTime());
        System.out.println("最近7天开始时间:" + getLast7DaysStartTime());
        System.out.println("最近7天结束时间:" + getLast7DaysEndTime());
        System.out.println("最近30天开始时间:" + getLast30DaysStartTime());
        System.out.println("最近30天结束时间:" + getLast30DaysEndTime());
        System.out.println("最近90天开始时间:" + getLast90DaysStartTime());
        System.out.println("最近90天结束时间:" + getLast90DaysEndTime());
        System.out.println("最近1年开始时间:" + getLastYearStartTime());
        System.out.println("最近1年结束时间:" + getLastYearEndTime());
        System.out.println("本周起开始时间:" + getFromThisWeekStartTime());
        System.out.println("本周起结束时间:" + getFromThisWeekEndTime());
        System.out.println("本月开始时间:" + getMonthStartTime());
        System.out.println("本月结束时间:" + getMonthEndTime());
        System.out.println("上个月开始时间:" + getLastMonthStartTime());
        System.out.println("上个月结束时间:" + getLastMonthEndTime());
        System.out.println("本季度起开始时间:" + getFromThisQuarterStartTime());
        System.out.println("本季度起结束时间:" + getFromThisQuarterEndTime());
        System.out.println("今年起开始时间:" + getFromThisYearStartTime());
        System.out.println("今年起结束时间:" + getFromThisYearEndTime());
    }

    /**
     * 当前时间
     *
     * @return
     */
    public static String getCurrentTime() {
        LocalDateTime currentTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(new Date().getTime()), ZoneId.systemDefault());
        return currentTime.format(dtf);

    }


    /**
     * 今天开始时间
     *
     * @return
     */
    public static String getTodayStartTime() {
        LocalDateTime todayStart = LocalDateTime.of(LocalDate.now(), LocalTime.MIN);
        return todayStart.format(dtf);
    }


    /**
     * 今天结束时间
     *
     * @return
     */
    public static String getTodayEndTime() {
        LocalDateTime todayEnd = LocalDateTime.of(LocalDate.now(), LocalTime.MAX);
        return todayEnd.format(dtf);
    }


    /**
     * 昨天开始时间
     *
     * @return
     */
    public static String getYesterdayStartTime() {
        Calendar cal = new GregorianCalendar();
        cal.set(Calendar.HOUR_OF_DAY, 0);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);
        cal.set(Calendar.MILLISECOND, 0);
        cal.add(Calendar.DAY_OF_MONTH, -1);
        LocalDateTime yesterdayStart = LocalDateTime.ofInstant(Instant.ofEpochMilli(cal.getTimeInMillis()), ZoneId.systemDefault());
        return yesterdayStart.format(dtf);
    }

    /**
     * 昨天结束时间
     *
     * @return
     */
    public static String getYesterdayEndTime() {
        Calendar cal = new GregorianCalendar();
        cal.set(Calendar.HOUR_OF_DAY, 23);
        cal.set(Calendar.MINUTE, 59);
        cal.set(Calendar.SECOND, 59);
        cal.add(Calendar.DAY_OF_MONTH, -1);
        LocalDateTime yesterdayEnd = LocalDateTime.ofInstant(Instant.ofEpochMilli(cal.getTimeInMillis()), ZoneId.systemDefault());
        return yesterdayEnd.format(dtf);
    }


    /**
     * 最近7天开始时间
     *
     * @return
     */
    public static String getLast7DaysStartTime() {
        Calendar cal = new GregorianCalendar();
        cal.set(Calendar.HOUR_OF_DAY, 0);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);
        cal.set(Calendar.MILLISECOND, 0);
        cal.add(Calendar.DAY_OF_MONTH, -7);
        LocalDateTime last7DaysStart = LocalDateTime.ofInstant(Instant.ofEpochMilli(cal.getTimeInMillis()), ZoneId.systemDefault());
        return last7DaysStart.format(dtf);
    }

    /**
     * 最近7天结束时间
     *
     * @return
     */
    public static String getLast7DaysEndTime() {
        Calendar cal = new GregorianCalendar();
        cal.set(Calendar.HOUR_OF_DAY, 23);
        cal.set(Calendar.MINUTE, 59);
        cal.set(Calendar.SECOND, 59);
        cal.add(Calendar.DAY_OF_MONTH, -7);
        LocalDateTime last7DaysEnd = LocalDateTime.ofInstant(Instant.ofEpochMilli(cal.getTimeInMillis()), ZoneId.systemDefault());
        return last7DaysEnd.format(dtf);
    }

    /**
     * 最近30天开始时间
     *
     * @return
     */
    public static String getLast30DaysStartTime() {
        Calendar cal = new GregorianCalendar();
        cal.set(Calendar.HOUR_OF_DAY, 0);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);
        cal.set(Calendar.MILLISECOND, 0);
        cal.add(Calendar.DAY_OF_MONTH, -30);
        LocalDateTime last30DaysStart = LocalDateTime.ofInstant(Instant.ofEpochMilli(cal.getTimeInMillis()), ZoneId.systemDefault());
        return last30DaysStart.format(dtf);
    }

    /**
     * 最近30天结束时间
     *
     * @return
     */
    public static String getLast30DaysEndTime() {
        Calendar cal = new GregorianCalendar();
        cal.set(Calendar.HOUR_OF_DAY, 23);
        cal.set(Calendar.MINUTE, 59);
        cal.set(Calendar.SECOND, 59);
        cal.add(Calendar.DAY_OF_MONTH, -30);
        LocalDateTime last30DaysEnd = LocalDateTime.ofInstant(Instant.ofEpochMilli(cal.getTimeInMillis()), ZoneId.systemDefault());
        return last30DaysEnd.format(dtf);
    }

    /**
     * 最近90天开始时间
     *
     * @return
     */
    public static String getLast90DaysStartTime() {
        Calendar cal = new GregorianCalendar();
        cal.set(Calendar.HOUR_OF_DAY, 0);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);
        cal.set(Calendar.MILLISECOND, 0);
        cal.add(Calendar.DAY_OF_MONTH, -90);
        LocalDateTime last90DaysStart = LocalDateTime.ofInstant(Instant.ofEpochMilli(cal.getTimeInMillis()), ZoneId.systemDefault());
        return last90DaysStart.format(dtf);
    }

    /**
     * 最近90天结束时间
     *
     * @return
     */
    public static String getLast90DaysEndTime() {
        Calendar cal = new GregorianCalendar();
        cal.set(Calendar.HOUR_OF_DAY, 23);
        cal.set(Calendar.MINUTE, 59);
        cal.set(Calendar.SECOND, 59);
        cal.add(Calendar.DAY_OF_MONTH, -90);
        LocalDateTime last90DaysEnd = LocalDateTime.ofInstant(Instant.ofEpochMilli(cal.getTimeInMillis()), ZoneId.systemDefault());
        return last90DaysEnd.format(dtf);
    }

    /**
     * 最近1年开始时间
     *
     * @return
     */
    public static String getLastYearStartTime() {
        Long currentTime = System.currentTimeMillis();
        String timeZone = "GMT+8:00";
        Calendar cal = Calendar.getInstance();// 获取当前日期
        cal.setTimeZone(TimeZone.getTimeZone(timeZone));
        cal.setTimeInMillis(currentTime);
        cal.add(Calendar.YEAR, -1);
        cal.add(Calendar.MONTH, 0);
        cal.set(Calendar.HOUR_OF_DAY, 0);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);
        cal.set(Calendar.MILLISECOND, 0);
        LocalDateTime lastYearStart = LocalDateTime.ofInstant(Instant.ofEpochMilli(cal.getTimeInMillis()), ZoneId.systemDefault());
        return lastYearStart.format(dtf);
    }

    /**
     * 最近1年结束时间
     *
     * @return
     */
    public static String getLastYearEndTime() {
        Long currentTime = System.currentTimeMillis();
        String timeZone = "GMT+8:00";
        Calendar cal = Calendar.getInstance();// 获取当前日期
        cal.setTimeZone(TimeZone.getTimeZone(timeZone));
        cal.setTimeInMillis(currentTime);
        cal.add(Calendar.YEAR, -1);
        cal.add(Calendar.MONTH, 0);
        cal.set(Calendar.HOUR_OF_DAY, 23);
        cal.set(Calendar.MINUTE, 59);
        cal.set(Calendar.SECOND, 59);
        LocalDateTime lastYearEnd = LocalDateTime.ofInstant(Instant.ofEpochMilli(cal.getTimeInMillis()), ZoneId.systemDefault());
        return lastYearEnd.format(dtf);
    }

    /**
     * 本周开始时间
     *
     * @return
     */
    public static String getFromThisWeekStartTime() {
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.WEEK_OF_MONTH, 0);
        cal.set(Calendar.DAY_OF_WEEK, 2);
        cal.set(Calendar.HOUR_OF_DAY, 0);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);
        cal.set(Calendar.MILLISECOND, 0);
        LocalDateTime fromThisWeekStart = LocalDateTime.ofInstant(Instant.ofEpochMilli(cal.getTimeInMillis()), ZoneId.systemDefault());
        return fromThisWeekStart.format(dtf);
    }

    /**
     * 本周开始时间
     *
     * @return
     */
    public static String getFromThisWeekEndTime() {
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.DAY_OF_WEEK, cal.getActualMaximum(Calendar.DAY_OF_WEEK));
        cal.add(Calendar.DAY_OF_WEEK, 1);
        cal.set(Calendar.HOUR_OF_DAY, 23);
        cal.set(Calendar.MINUTE, 59);
        cal.set(Calendar.SECOND, 59);
        cal.set(Calendar.MILLISECOND, 999);
        LocalDateTime monthStart = LocalDateTime.ofInstant(Instant.ofEpochMilli(cal.getTimeInMillis()), ZoneId.systemDefault());
        return monthStart.format(dtf);
    }

    /**
     * 本月开始时间
     *
     * @return
     */
    public static String getMonthStartTime() {
        Long currentTime = System.currentTimeMillis();
        String timeZone = "GMT+8:00";
        Calendar cal = Calendar.getInstance();// 获取当前日期
        cal.setTimeZone(TimeZone.getTimeZone(timeZone));
        cal.setTimeInMillis(currentTime);
        cal.add(Calendar.YEAR, 0);
        cal.add(Calendar.MONTH, 0);
        cal.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天
        cal.set(Calendar.HOUR_OF_DAY, 0);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);
        cal.set(Calendar.MILLISECOND, 0);
        LocalDateTime monthStart = LocalDateTime.ofInstant(Instant.ofEpochMilli(cal.getTimeInMillis()), ZoneId.systemDefault());
        return monthStart.format(dtf);
    }

    /**
     * 本月结束时间
     *
     * @return
     */
    private static String getMonthEndTime() {
        Long currentTime = System.currentTimeMillis();
        String timeZone = "GMT+8:00";
        Calendar cal = Calendar.getInstance();// 获取当前日期
        cal.setTimeZone(TimeZone.getTimeZone(timeZone));
        cal.setTimeInMillis(currentTime);
        cal.add(Calendar.YEAR, 0);
        cal.add(Calendar.MONTH, 0);
        cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));// 获取当前月最后一天
        cal.set(Calendar.HOUR_OF_DAY, 23);
        cal.set(Calendar.MINUTE, 59);
        cal.set(Calendar.SECOND, 59);
        cal.set(Calendar.MILLISECOND, 999);
        LocalDateTime monthEnd = LocalDateTime.ofInstant(Instant.ofEpochMilli(cal.getTimeInMillis()), ZoneId.systemDefault());
        return monthEnd.format(dtf);
    }

    /**
     * 上个月开始时间
     *
     * @return
     */
    public static String getLastMonthStartTime() {
        Long currentTime = System.currentTimeMillis();
        String timeZone = "GMT+8:00";
        Calendar cal = Calendar.getInstance();// 获取当前日期
        cal.setTimeZone(TimeZone.getTimeZone(timeZone));
        cal.setTimeInMillis(currentTime);
        cal.add(Calendar.YEAR, 0);
        cal.add(Calendar.MONTH, -1);
        cal.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天
        cal.set(Calendar.HOUR_OF_DAY, 0);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.SECOND, 0);
        cal.set(Calendar.MILLISECOND, 0);
        LocalDateTime lastMonthStart = LocalDateTime.ofInstant(Instant.ofEpochMilli(cal.getTimeInMillis()), ZoneId.systemDefault());
        return lastMonthStart.format(dtf);
    }

    /**
     * 上个月结束时间
     *
     * @return
     */
    public static String getLastMonthEndTime() {
        Long currentTime = System.currentTimeMillis();
        String timeZone = "GMT+8:00";
        Calendar cal = Calendar.getInstance();// 获取当前日期
        cal.setTimeZone(TimeZone.getTimeZone(timeZone));
        cal.setTimeInMillis(currentTime);
        cal.add(Calendar.YEAR, 0);
        cal.add(Calendar.MONTH, -1);
        cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));// 获取当前月最后一天
        cal.set(Calendar.HOUR_OF_DAY, 23);
        cal.set(Calendar.MINUTE, 59);
        cal.set(Calendar.SECOND, 59);
        cal.set(Calendar.MILLISECOND, 999);
        LocalDateTime lastMonthEnd = LocalDateTime.ofInstant(Instant.ofEpochMilli(cal.getTimeInMillis()), ZoneId.systemDefault());
        return lastMonthEnd.format(dtf);
    }

    /**
     * 本季度起开始时间
     *
     * @return
     */
    public static String getFromThisQuarterStartTime() {
        LocalDate nowDate = LocalDate.now();
        Month firstMonthOfQuarter = nowDate.getMonth().firstMonthOfQuarter();
        nowDate = LocalDate.of(nowDate.getYear(), firstMonthOfQuarter, 1);
        LocalDateTime fromThisQuarterStart = LocalDateTime.of(nowDate, LocalTime.MIN);
        return fromThisQuarterStart.format(dtf);

    }

    /**
     * 本季度起结束时间
     *
     * @return
     */
    public static String getFromThisQuarterEndTime() {
        LocalDate nowDate = LocalDate.now();
        Month firstMonthOfQuarter = nowDate.getMonth().firstMonthOfQuarter();
        Month endMonthOfQuarter = Month.of(firstMonthOfQuarter.getValue() + 2);
        nowDate = LocalDate.of(nowDate.getYear(), endMonthOfQuarter, endMonthOfQuarter.length(nowDate.isLeapYear()));
        LocalDateTime fromThisQuarterEnd = LocalDateTime.of(nowDate, LocalTime.MAX);
        return fromThisQuarterEnd.format(dtf);
    }

    /**
     * 今年起开始时间
     *
     * @return
     */
    public static String getFromThisYearStartTime() {
        LocalDate nowDate = LocalDate.now();
        LocalDate firstDayOfYear = nowDate.with(TemporalAdjusters.firstDayOfYear());
        LocalDateTime fromThisYearStart = LocalDateTime.of(firstDayOfYear, LocalTime.MIN);
        return fromThisYearStart.format(dtf);
    }

    /**
     * 今年起结束时间
     *
     * @return
     */
    public static String getFromThisYearEndTime() {
        LocalDate nowDate = LocalDate.now();
        LocalDate lastDayOfYear = nowDate.with(TemporalAdjusters.lastDayOfYear());
        LocalDateTime fromThisYearEnd = LocalDateTime.of(lastDayOfYear, LocalTime.MAX);
        return fromThisYearEnd.format(dtf);
    }


}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值