今天开始我也弃用Date了
自从用了java.time下面的LocalDate、LocalDateTime、LocalTime真的不会再用java.util.date。平时经常用到统计每天的数据,每月周的数据,每月的数据,用Date算这些时间太麻烦了。最近几个项目看到同事的日期都是用的localdatetime,我也尝试着用了下确实方便。
举一个小demo对比一下吧,获取当前的日期、时间、当前开始日期、当天结束日期
Date
// 获取当天开始时间和结束时间
public void getDayBeginByDate() {
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);
//获取当天开始时间
System.out.println(cal.getTime());
//获取当天结束时间
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
System.out.println(cal.getTime());
}
//获取本周的开始时间
public void getBeginDayOfWeek() {
Date date = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int dayofweek = cal.get(Calendar.DAY_OF_WEEK);
if (dayofweek == 1) {
dayofweek += 7;
}
cal.add(Calendar.DATE, 2 - dayofweek);
cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH), 0,
0, 0);
//获取本周的开始时间
System.out.println(cal.getTime());
}
LocalDateTime
public void timeUtil(){
//获取当天开始时间
System.out.println(LocalDate.now().atStartOfDay());
//获取当天结束时间
System.out.println(LocalDateTime.of(LocalDate.now(), LocalTime.of(23, 59, 59)));
//获取本周的开始时间
System.out.println(LocalDate.now().with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)).atStartOfDay());
}
当然java.time 下面还有很多方便的API,还没用过的朋友一定要看看哦