获取当前日期/分钟的开始时间和结束时间

1、LocalDate方法

import java.time.LocalDate;
import java.time.LocalTime;
// 当前时间(LocalDate方法
LocalDate currentLD = LocalDate.now();
System.out.println("当前时间:"+currentLD);
// 获取当前日期的开始时间(凌晨 00:00:00)
LocalDateTime startOfDayLD = currentLD.atStartOfDay();
System.out.println("当前日期的开始时间:"+startOfDayLD);
// 获取当前日期的结束时间(23:59:59.999999999)
LocalDateTime endOfDayLD = currentLD.atTime(LocalTime.MAX);
System.out.println("当前日期的结束时间:"+endOfDayLD);
结果:

当前时间:2023-11-29
当前日期的开始时间:2023-11-29T00:00
当前日期的结束时间:2023-11-29T23:59:59.999999999

LocalDateTime方法

import java.time.LocalDateTime;
import java.time.LocalTime;
// 当前时间(LocalDateTime方法
LocalDateTime currentLDT = LocalDateTime.now();
System.out.println("当前时间:"+currentLDT);
// 获取当前日期的开始时间(凌晨 00:00:00)
LocalDateTime startOfDayLDT = currentLDT.with(LocalTime.MIN);
System.out.println("当前日期的开始时间:"+startOfDayLDT);
// 获取当前日期的结束时间(23:59:59.999999999)
LocalDateTime endOfDayLDT = currentLDT.with(LocalTime.MAX);
System.out.println("当前日期的结束时间:"+endOfDayLDT);
结果:

当前时间:2023-11-29T15:25:44.178
当前日期的开始时间:2023-11-29T00:00
当前日期的结束时间:2023-11-29T23:59:59.999999999

利用DateUtil工具类

import cn.hutool.core.date.DateTime;
import java.util.Date;
import cn.hutool.core.date.DateUtil;
// 当前时间(Date+DateUtil方法
Date current = new Date();
System.out.println("当前时间:"+current);
// 获取当前日期的开始时间(凌晨 00:00:00)
DateTime beginOfDay = DateUtil.beginOfDay(current);
System.out.println("当前日期的开始时间:"+beginOfDay);
// 获取当前日期的结束时间(23:59:59)
DateTime endOfDay = DateUtil.endOfDay(current);
System.out.println("当前日期的结束时间:"+endOfDay);
结果:

当前时间:Wed Nov 29 15:29:10 CST 2023
当前日期的开始时间:2023-11-29 00:00:00
当前日期的结束时间:2023-11-29 23:59:59

利用Date自定义

import java.util.Date;
Date now = new Date();
  /**
     * 获取指定日期的开始时间(当天的凌晨)
     *
     * @param date 输入日期
     * @return 开始时间
     * @throws IllegalArgumentException 如果日期参数为空
     */
    public static Date getBeginOfDay(Date date) {
        if (date == null) {
            date = new Date();
        }
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        return calendar.getTime();
    }
 /**
 * 获取指定日期的结束时间(当天的最后一刻)
 *
 * @param date 输入日期
 * @return 结束时间
 * @throws IllegalArgumentException 如果日期参数为空
 */
public static Date getEndOfDay(Date date) {
    if (date == null) {
        date = new Date();
    }
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    calendar.set(Calendar.HOUR_OF_DAY, 23);
    calendar.set(Calendar.MINUTE, 59);
    calendar.set(Calendar.SECOND, 59);
    return calendar.getTime();
}
结果:

当前时间:Wed Nov 29 15:48:56 CST 2023
当前日期的开始时间:Wed Nov 29 00:00:00 CST 2023
当前日期的结束时间:Wed Nov 29 23:59:59 CST 2023

yyyy-MM-dd HH:mm字符串获取mm的开始及结束

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String format1 = "2023-12-08 16:58" + ":00";
String format2 = "2023-12-08 16:58" + ":59";
System.out.println(format1);
System.out.println(format2);
Date parse1 = simpleDateFormat.parse(format1);
Date parse2 = simpleDateFormat.parse(format2);
System.out.println(parse1);
System.out.println(parse2);
结果:

2023-12-08 16:58:00
2023-12-08 16:58:59
Fri Dec 08 16:58:00 CST 2023
Fri Dec 08 16:58:59 CST 2023

注意

如果是yyyy-MM-dd HH:mm而不是yyyy-MM-dd HH:mm:ss则秒转换为时间Date时都为00,不管定义或追加的数字为多少,结果都是00秒;并且如果字符串中没有秒(即yyyy-MM-dd HH:mm格式)则无法使用yyyy-MM-dd HH:mm:ss转换为时间,会报错。

你可能感兴趣的:(Java,java)