本人最近完成了lab3的实验。在完成dutyroster类(排班表)时,需要对时间进行恰当的处理。因为面向现实生活时,必须要考虑不同年份、不同月份对计算时间差天数的处理。我在完成这次实验时也是产生了很大的困扰,最终在室友的帮助下,我利用java的localDate类实现了很好的处理。
下面介绍一下localDate类,我们直接用一组代码来理解:
LocalDate localDate = LocalDate.now();
System.out.println("localDate="+localDate); //localDate=2021-07-05 ,直接获取当天的信息
System.out.println("localDate="+localDate.getDayOfWeek().getValue()); //获取星期几
System.out.println("localDate="+localDate.get(ChronoField.ALIGNED_WEEK_OF_MONTH)); //获取当前月的第几周
System.out.println(localDate.getDayOfYear()); //获取本年中截止到今天已经过去的天数
System.out.println(localDate.with(TemporalAdjusters.firstDayOfMonth())); //得到所在月的第一天
System.out.println(localDate.withDayOfMonth(3)); //得到所在月的第三天
System.out.println(localDate.with(TemporalAdjusters.lastDayOfMonth())); //得到所在月的最后一天
System.out.println(localDate.plusDays(10)); //得到10天后的日期
通过上面的代码,可以对localDate有简单的理解。
在lab3中,我通过(endDate.toEpochDay() - startDate.toEpochDay())的表达式,来间接获得了起止天数差。