首页 > 生辰八字

java输入年月日计算天数日期婚姻配对(我用Java8解决了烦人的日期计算问题)

我用 生辰八字 03-28

相信许多人皆有过处理日期计算的烦恼。特别是在流程开发中,经常需要依据输入的年月日来计算天数,而这个过程也许会变得特别繁琐。特别是在考虑闰年和每一个月的天数差别等因素时,更是需要仔细处理。HU3鬼金羊

不过,幸运的是,Java8给我们带过来了一个非常方便的日期计算工具。它提供了一些强大而简洁的类和方法,使得处理日期计算变得更加简单,省去了我们繁琐的手动计算过程。HU3鬼金羊

在使用Java8的日期计算工具之前,大家需要将输入的年、月、日转化为Java的日期对象。应该使用LocalDate类来实现这一转换。打比方说,俺们是可以将输入的年、月、日分别存储在year、month和day变量中,紧接着使用下面的代码将其转换为LocalDate对象:HU3鬼金羊

```javaHU3鬼金羊

LocalDatedate=LocalDate。of(year,month,day);HU3鬼金羊

```HU3鬼金羊

有了LocalDate对象后,我们就能够使用它提供的方式方法来进行日期的计算。打比方说,应该使用plusDays()方法来增添指定的天数,使用minusDays()方法来减少指定的天数。HU3鬼金羊

以下是一个示例代码,演示了怎样使用Java8的日期计算工具来计算天数:HU3鬼金羊

```javaHU3鬼金羊

importjava。time。LocalDate;HU3鬼金羊

publicclassDateCalculator{HU3鬼金羊

publicstaticvoidmain(String[]args){HU3鬼金羊

intyear=2022;HU3鬼金羊

intmonth=11;HU3鬼金羊

intday=15;HU3鬼金羊

LocalDatedate=LocalDate。of(year,month,day);HU3鬼金羊

//计算前一天的日期HU3鬼金羊

LocalDatepreviousDay=date。minusDays(1);HU3鬼金羊

System。out。println("前一天的日期:"+previousDay);HU3鬼金羊

//计算后一天的日期HU3鬼金羊

LocalDatenextDay=date。plusDays(1);HU3鬼金羊

System。out。println("后一天的日期:"+nextDay);HU3鬼金羊

}HU3鬼金羊

}HU3鬼金羊

```HU3鬼金羊

通过上述代码,俺们是可以很方便地计算输入日期的前一天和后一天的日期。诚然,Java8提供的日期计算工具还有许多其他功能,打比方说计算两个日期之间的天数差、计算某个日期是星期几等,可以依据具体需求进行使用。HU3鬼金羊

也就是说,借助Java8的日期计算工具,我们再也不必为处理日期计算而烦恼了。它提供了简洁而强大的类和方法,能够满足我们样式不一的日期计算需求。此刻,使俺们将精力集中于流程的其他部分,让日期计算变得更加轻松吧!!!HU3鬼金羊

来源头条作者:Lvshen的技术小屋我们平常时候开发日期多数都是使用Date类。在使用Date计算时,一般将会将Date转换成时间戳,即转换成ms后进行计算,这样做很麻烦。当然我们也应该使用第3方日期类。其实也就是说Java8自带的日期类就相当的强大了,基本能满足各式计算。现在咱们就来聊聊Java8里面的日期类。LocateDate与LocateDateTimeLocateDate获取的是日期,精确到天。LocateDateTime那么可以精确到秒。如上代码,运行结果为:todayDateTime:2021-11-02T16:13:02、638HU3鬼金羊

todayDate:2021-11-02大家需要精确日期到秒时应该使用LocalDateTime。假如仅需要精确到天,就能够使用LocalDate,打比方说判断两个日期是否为同一日便应该使用LocalDate。假如你的需求仅需要获取时间,不需要日期。应该使用LocalTime。@TestHU3鬼金羊

publicvoidgetCurrentTime(){HU3鬼金羊

LocalTimelocalTime=LocalTime。now();HU3鬼金羊

System。out。println("localTime:"+localTime);HU3鬼金羊

}运行结果为:localTime:16:20:20。111由此可见Java8后日期类更加丰富了,对日期类的处理也更加人性化了。获取日期的年月日Java8的LocalDate里面自带的方式方法可以获取到日期的年月日。//获取年、月、日信息HU3鬼金羊

@TestHU3鬼金羊

publicvoidgetDetailDate(){HU3鬼金羊

LocalDatetoday=LocalDate。now();HU3鬼金羊

intyear=today。getYear();HU3鬼金羊

intmonth=today。getMonthValue();HU3鬼金羊

intday=today。getDayOfMonth();HU3鬼金羊

Console。log("Year:{}Month:{}day:{}",year,month,day);HU3鬼金羊

//Year:2021Month:10day:29HU3鬼金羊

}如上代码,返回的是:Year:2021Month:10day:29判断两个日期是否相等我们有时会有需要:判断两个日期是否为同一天。打比方说签到功能,每次签到前需要判断今日是否已经签到。假如在Java8之前我们也许会转换成时间戳,通过时间戳作比较。到了Java8后,我们直接应该使用equals()方法。如上代码,运行结果为:today[2021-11-03]和date1[2021-11-03]是同一天LocalDate重写了equals方法。@OverrideHU3鬼金羊

publicbooleanequals(Objectobj){HU3鬼金羊

if(this==obj){HU3鬼金羊

returntrue;HU3鬼金羊

}HU3鬼金羊

if(objinstanceofLocalDate){HU3鬼金羊

returncompareTo0((LocalDate)obj)==0;HU3鬼金羊

}HU3鬼金羊

returnfalse;HU3鬼金羊

}HU3鬼金羊

intcompareTo0(LocalDateotherDate){HU3鬼金羊

intcmp=(year-otherDate。year);HU3鬼金羊

if(cmp==0){HU3鬼金羊

cmp=(month-otherDate。month);HU3鬼金羊

if(cmp==0){HU3鬼金羊

cmp=(day-otherDate。day);HU3鬼金羊

}HU3鬼金羊

}HU3鬼金羊

returncmp;HU3鬼金羊

}从重写的equals源码来看,是将两个日期的年月日依次作比较。计算生日假如大家都清楚用户的出生日期,我们要判断今日是不是用户的生日。我们就能够使用MonthDay这个类。如上代码,通过MonthDay可以获取到月和日,紧接着直接使用equals()方法即可进行判断。运行结果为:生日快乐!!时间加减我们经常会计算时间,打比方说给当前时间加两小时,减两小时等。上面代码运行结果为:Timeafter2hours:16:40:30。997HU3鬼金羊

newLocalDateTimeafter2hours:2021-11-03T16:40:30。997Java8的日期不但可以加小时。秒,月,天,年等皆可以加。假如需要减时间,应该使用minusXXX()方法。日期大小比较Java8应该使用isBefore和isAfter来进行日期之间的比较。上面代码运行结果为:Yesterdayisdaybeforetoday判断闰年假如需要判断当前年是还是不是闰年,使用Java8的isLeapYear非常方便。@TestHU3鬼金羊

publicvoidisLeapYear(){HU3鬼金羊

LocalDatetoday=LocalDate。now();HU3鬼金羊

if(today。isLeapYear()){HU3鬼金羊

System。out。println("今年是闰年");HU3鬼金羊

}else{HU3鬼金羊

System。out。println("今年不是闰年");HU3鬼金羊

}HU3鬼金羊

}isLeapYear的方式方法如下@OverrideHU3鬼金羊

publicbooleanisLeapYear(longprolepticYear){HU3鬼金羊

return((prolepticYear&3)==0)&&((prolepticYear%100)!=0||(prolepticYear%400)==0);HU3鬼金羊

}计算两个日期之间的差Java8应该使用Period。between可以获取两个日期之间相差的年月日。上面代码运行结果destLocalDate【2018-05-14】到today【2021-11-03】相差了【3】年【5】月【20】天诚然,我们可能还need计算得更精确,打比方说计算相差多少天,多少秒等。这时就能够使用ChronoUnit枚举。ChronoUnit提供了富饶的类别,完全满足各式需求。今天的文章就写来这里了,假如能够帮到你,欢迎点赞+转发。HU3鬼金羊

HU3鬼金羊

标签: