Date类型时间和LocalDateTime时间相互转换。

1.将Date转为LocalDateTime,

Date date = new Date();
Instant instant = date.toInstant();
ZoneId zoneId = ZoneId.systemDefault();

LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime();

2.将LocalDateTime转换为Date

ZoneId zoneId = ZoneId.systemDefault();
LocalDateTime localDateTime = LocalDateTime.now();
ZonedDateTime zdt = localDateTime.atZone(zoneId);

Date date = Date.from(zdt.toInstant());

获取今年的开始时间,获取获取近一年的所有月份,获取今年起始时间和结束时间,根据时间获取年份……

import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.date.DateField;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters;
import java.util.*;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @description: TODO
 * @date: 2022/8/18 9:23
 */
public class DataDateUtils {


    //获取当天的起始时间
    public static String dayToday() {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar cal = Calendar.getInstance();
        Date date = new Date();
        cal.setTime(date);
        Date time = cal.getTime();
        String dateDay = sdf.format(time);
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String format = null;
        try {
            Date parse = df.parse(dateDay + " 00:00:00");
            format = df.format(parse);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return format;
    }

    /**
     * 获取今年起始时间和结束时间
     */
    public static LocalDateTime getYearDay(Boolean firstFlag) {
        //获取当前时间
        LocalDate nowDate = LocalDate.now();
        LocalDate firstDayOfYear = nowDate.with(TemporalAdjusters.firstDayOfYear());
        LocalDate lastDayOfYear = nowDate.with(TemporalAdjusters.lastDayOfYear());
        //获取今年第一天
        LocalDateTime firstDateOfYear = LocalDateTime.of(firstDayOfYear, LocalTime.MIN);
        //获取今年最后一天
        LocalDateTime lastDateOfYear = LocalDateTime.of(lastDayOfYear, LocalTime.MAX);
        if (firstFlag) {
            return firstDateOfYear;
        } else {
            return lastDateOfYear;
        }
    }

    /**
     * 获取当天时间的起始时间和结束时间
     * @param startFlag
     * @return
     */
    public static LocalDateTime getToday(Boolean startFlag) {
        //获取当前日期
        LocalDate nowDate = LocalDate.now();
        //设置零点
        LocalDateTime beginTime = LocalDateTime.of(nowDate, LocalTime.MIN);
        //将时间进行格式化
        //设置当天的结束时间
        LocalDateTime endTime = LocalDateTime.of(nowDate, LocalTime.MAX);
        //将时间进行格式化
        if (startFlag) {
            return beginTime;
        } else {
            return endTime;
        }
    }

    /**
     * 获取上一年的开始时间和结束时间
     * @param firstFlag
     * @return
     */
    public static LocalDateTime getLastYearDay( boolean firstFlag){

        //获取今年第一天
        LocalDate lastYearStrDay = LocalDate.of(LocalDate.now().minusYears(1).getYear(), 1, 1);
        LocalDate firstDayOfYear = lastYearStrDay.with(TemporalAdjusters.firstDayOfYear());
        LocalDate lastDayOfYear = lastYearStrDay.with(TemporalAdjusters.lastDayOfYear());
        //获取今年第一天
        LocalDateTime firstDateOfYear = LocalDateTime.of(firstDayOfYear, LocalTime.MIN);
        //获取今年最后一天
        LocalDateTime lastDateOfYear = LocalDateTime.of(lastDayOfYear, LocalTime.MAX);
        if (firstFlag) {
            return firstDateOfYear;
        } else {
            return lastDateOfYear;
        }
    }

    /**
     * 获取上一年的开始日期和结束日期
     * @param firstFlag
     * @return
     */
    public static LocalDate getFirstYearDay( boolean firstFlag){

        //获取今年第一天
        LocalDate lastYearStrDay = LocalDate.of(LocalDate.now().minusYears(1).getYear(), 1, 1);
        LocalDate firstDayOfYear = lastYearStrDay.with(TemporalAdjusters.firstDayOfYear());
        LocalDate lastDayOfYear = lastYearStrDay.with(TemporalAdjusters.lastDayOfYear());

        if (firstFlag) {
            return firstDayOfYear;
        } else {
            return lastDayOfYear;
        }
    }
    /**
     * 获取今年的开始日期和结束日期
     * @param firstFlag
     * @return
     */
    public static LocalDate getNowYearDay( boolean firstFlag){

        //获取今年第一天
        LocalDate lastYearStrDay = LocalDate.of(LocalDate.now().getYear(), 1, 1);
        LocalDate firstDayOfYear = lastYearStrDay.with(TemporalAdjusters.firstDayOfYear());
        LocalDate lastDayOfYear = lastYearStrDay.with(TemporalAdjusters.lastDayOfYear());

        if (firstFlag) {
            return firstDayOfYear;
        } else {
            return lastDayOfYear;
        }
    }
    /**
     * 返回两个年月区间的所有年月字符 格式"yyyy-MM"
     */
    public static Set<String> generateDateInterval(LocalDate from,LocalDate to){
        if (ObjectUtil.isNull(from)||ObjectUtil.isNull(to)||from.isAfter(to)){
            return null;
        }
        Set<String> dateInterval = new LinkedHashSet<>();
        while (!from.isAfter(to)){
            String format = from.format(DateTimeFormatter.ofPattern("yyyy-MM"));
            dateInterval.add(format);
            from=from.plusMonths(1);
        }
        return dateInterval;
    }

    public static List<String> generateDateIntervalList(LocalDate from,LocalDate to){
        if (ObjectUtil.isNull(from)||ObjectUtil.isNull(to)||from.isAfter(to)){
            return null;
        }
        List<String> dateInterval = new ArrayList<>();
        while (!from.isAfter(to)){
            String format = from.format(DateTimeFormatter.ofPattern("yyyy-MM"));
            dateInterval.add(format);
            from=from.plusMonths(1);
        }
        return dateInterval;
    }


    /**
     * 获取今年开始时间或今天开始时间
     * @param b
     * @return
     */
    public static Date getStartYearOrDay(boolean b){

        String now = DateUtil.now();
        Date date = DateUtil.parse(now);
        Date startDate;
        if (b){
            startDate = DateUtil.beginOfYear(date);
        }else {
            startDate = DateUtil.beginOfDay(date);
        }
        return startDate;
    }

    /**
     * 获取当年的所有月份
     * @return
     */
    public static List<String> getMonthListOfDate(){
        String now = DateUtil.now();
        Date date = DateUtil.parse(now);
        DateTime start = DateUtil.beginOfYear(date);
        DateTime end = DateUtil.endOfYear(date);
        List<DateTime> dateTimes = DateUtil.rangeToList(start, end, DateField.MONTH);
        List<String> dateList = dateTimes.parallelStream().map(item -> {
            return DateUtil.format(item, "yyyy-MM");
        }).collect(Collectors.toList());

        return dateList;
    }

    /**
     * 获取去年今天
     * @param date
     * @return
     */
    public static Date getLastYearDay(Date date){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.add(Calendar.YEAR, -1);
        Date time = cal.getTime();
        return time;
    }

    /**
     * 根据时间获取年份
     * @param date
     * @return
     */
    public static String getYearByDate(Date date){
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        Integer y = c.get(Calendar.YEAR);
        return y.toString();
    }


    public static Date transferString2Date(String s) {
        Date date = new Date();
        try {
            date = new SimpleDateFormat("yyyy-MM").parse(s);
        } catch (ParseException e) {

        }
        return date;
    }


}

版权声明:本文为weixin_48720080原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_48720080/article/details/127323504