前言
在日常开发中,我们经常需要获取某一天的开始时间和结束时间,然后再去做一些逻辑处理。这里提供两种demo。
java8之前
这种是采用手动设置日期的时分秒为需要的格式,具体代码如下
@Test
public void getLastDayTime() {
Date date = new Date();
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
//一天的开始时间 yyyy:MM:dd 00:00:00
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
Date dayStart = calendar.getTime();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String startStr = simpleDateFormat.format(dayStart);
System.out.println("开始时间" + startStr);
//一天的结束时间 yyyy:MM:dd 23:59:59
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
calendar.set(Calendar.MILLISECOND, 999);
Date dayEnd = calendar.getTime();
String endStr = simpleDateFormat.format(dayEnd);
System.out.println("结束时间" + endStr);
}
上述代码能实现功能,但是代码量有点迷。
java8的时间工具包
java种提供了新的时间处理工具,我们完全可以直接使用,具体代码如下
@Test
public void testLocalDateTime() {
LocalDateTime startTime = LocalDateTime.of(LocalDate.now(), LocalTime.MIN);
String startTimeStr = startTime.format(DateTimeFormatter.ofPattern(
"yyyy-MM-dd HH:mm:ss"));
System.out.println("开始时间" + startTimeStr);
LocalDateTime endTime = LocalDateTime.of(LocalDate.now(), LocalTime.MAX);
String endTimeStr = endTime.format(DateTimeFormatter.ofPattern(
"yyyy-MM-dd HH:mm:ss"));
System.out.println("结束时间" + endTimeStr);
}
同样是获取开始时间和结束时间,代码量显而易见。下面是获取某一天的开始时间和截至时间
public void getEndOfDay(Date date) {
LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()),
ZoneId.systemDefault());
LocalDateTime endOfDay = localDateTime.with(LocalTime.MAX);
String endTimeStr = endOfDay.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
System.out.println("结束时间" + endTimeStr);
}
public void getStartOfDay(Date date) {
LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(date.getTime()),
ZoneId.systemDefault());
LocalDateTime startOfDay = localDateTime.with(LocalTime.MIN);
String startTimeStr = startOfDay.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
System.out.println("开始时间" + startTimeStr);
}