java和当前时间比较_java比较时间

我看前面已经有人说到Java8了...不过这个写法是有点尴尬...思路大家基本一样...

给的start时间要变为当前月的第一天

给的end时间要变为当前月的最后一天

关键是如何变的问题...Java8的时间是有现成的API可以调用的...不需要parse这种方式...变成第一天还好,变成最后一天有诸多的判断...

代码如下,按照所给条件,写了一个isBetween方法

public static boolean isBetween(String date, String start, String end){

// 把start转化为start所在月份的第一天

LocalDate startDate = LocalDate.now().with(YearMonth.parse(start)).with(TemporalAdjusters.firstDayOfMonth());

// 把end转化为end所在月份的最后一天

LocalDate endDate = LocalDate.now().with(YearMonth.parse(end)).with(TemporalAdjusters.lastDayOfMonth());

// 把date转化为LocalDate

LocalDate currentDate = LocalDate.parse(date);

return currentDate.isAfter(startDate) && currentDate.isBefore(endDate);

}

简单解释一下...

yyyy-mm这种年月的形式在Java8中已经有新的类来处理,这就是YearMonth(它是一个TemporalAdjuster的实现类),根据LocalDate(它是一个Temporal的实现类)的with方法,其实是Temporal接口的with方法,这里涉及到Java8的新时间API的设计,with方法签名如下

fc55d58b01f67916935212edd5d039d6.png

含义即是:一个Temporal对象可以根据一个TemporalAdjuster对象进行调整

所以结合到上面写的代码,思路如下

随意取了当前时间LocalDate A

把A根据传入的YearMonth进行修改(调用with方法),即调整时间的年和月,得到时间B

把B再根据一个调整器TemporalAdjuster(TemporalAdjusters.firstDayOfMonth),调整时间的日,得到最后的时间

其实时间调整,在TemporalAdjusters中已经封装了不少常用的了...用起来也简单直白好用的,可以关注这个类

最后,提供一个我以前自己简单连的Java8新时间API的一些关系,跟着这些关系可以再看看具体类,捋捋关系,会发现新时间API不但好用还很强大

java和当前时间比较_java比较时间_第1张图片

你可能感兴趣的:(java和当前时间比较)