1,关于LocaDateTime
Java的Date,Calendar类型使用起来并不是很方便,而且Date类(据说)有着线程不安全等诸多弊端。同时若不进行封装,会在每次使用时特别麻烦。于是Java8推出了线程安全、简易、高可靠的时间包。并且数据库中也支持LocalDateTime类型,在数据存储时候使时间变得简单。Java8这次新推出的包括三个相关的时间类型:LocalDateTime年月日十分秒;LocalDate日期;LocalTime时间;三个包的方法都差不多。
2,LocaDateTime的用法
以前我们进行时间字符串的转换是这样的
/**
* 字符串转时间
* @param strDate
* @return
*/
public static Date dateFormat(String strDate){
//注意:SimpleDateFormat构造函数的样式与strDate的样式必须相符
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy年MM月dd日 ");
SimpleDateFormat sDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //加上时间
Date date= null;
//必须捕获异常
try {
date=sDateFormat.parse(strDate);
System.out.println(date);
} catch(
ParseException px) {
px.printStackTrace();
}
return date;
}
现在是这样的
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime time = LocalDateTime.now();
String localTime = df.format(time);
LocalDateTime ldt = LocalDateTime.parse("2017-09-28 17:07:05",df);
System.out.println("LocalDateTime转成String类型的时间:"+localTime);
System.out.println("String类型的时间转成LocalDateTime:"+ldt);
以前我们计算时间是这样的
//每天毫秒数
long nd = 1000 * 24 * 60 * 60;
//每小时毫秒数
long nh = 1000 * 60 * 60;
//每分钟毫秒数
long nm = 1000 * 60;
//获取一小时
long oneTime = 60*1000*60;
// 获得两个时间的毫秒时间差异
long diff = singOutTime.getTime() - checkTimes.getTime()-oneTime;
// 计算差多少小时
long hour = diff % nd / nh;
// 计算差多少分钟
long min = diff % nd % nh / nm;
现在我们是这样计算的
这边我计算两个时间差是处理跨月的跨年的
@Test
public void testSummaryCount(){
String strtime = "2019-05-30";
String endtime = "2019-06-30";
DateTimeFormatter sf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate endLocalDate = LocalDate.parse(endtime, sf);
LocalDate strLocalDate = LocalDate.parse(strtime, sf);
Long s = endLocalDate.toEpochDay()-strLocalDate.toEpochDay();
LocalDate plusDaysResult = strLocalDate;
for(int i =0;i<=s/7;i++){
System.out.println(plusDaysResult);
plusDaysResult = plusDaysResult.plusDays(7L);
}
}
LocalDate localDate1 = LocalDate.of(2017, 10, 24);
LocalDate localDate2 = LocalDate.of(2017, 10, 27);
Period next = Period.between(localDate1, localDate2);
System.out.println("相隔多少天:" + next.getDays());
locadatetime的一些常用方法
3,LocaDatetime的好处
关于好处感觉说再多也没啥,自己时间开发中使用起来就会发现,locaDateTime要比Date,Calendar类要好用很多,不过在springboot开发中如果有用到localdateTime和前端联调时需要注意locaDateTime时精确到时分秒,LocaDate是只有年月日,
在前端传值时需要加上注解
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")