Java类库的设计者将保存时间与给时间点命名分开。所以标准Java类库分别包含了两个类:一个是用来表示时间点的Date类;另一个是用来表示日历表示法的LocalDate类。这里简单分析了LocalDate类的使用,即打印一个本月的日历表。熟悉java类库的一些基本操作,以及锻炼程序的设计思路。
首先,这里不能使用构造器来构造LocalDate类的对象,应当使用静态工厂方法代表你调用构造器,并保存在一个对象变量中。
LocalDate的对象实例化一旦有了一个LocalDate对象,可以用方法getYear、getMonthValue和getDayOfMonth得到年、月和日。
LocalDate的一些方法看起来这似乎没有多大的意义。因为这正是构造对象时使用的那些值。不过,有时可能某个日期是计算得到的,你希望调用这些方法得到更多信息。例如,plusDays方法会得到一个新的LocalDate对象
plusDays的用法好,现在就上全部的代码和结果。
全部示例代码 运行结果打印设计思路是这样的,先获取当前时间,并把当前时间的月和日,保存在month和today变量里。
month和today然后再找到这个月的第一天。其中,minusDays(LocalDate minusDays(int n))这个方法的意思是,生成当前日期之后或之前的n天,n为正数时,是前n天。这里假设today是2,那么today-1就是1,所以是2号的前1天,也就是1号,为本月的第一天。
date为本月的第一天得到本月的第一天的作用是为了得到第一天是星期几,这里使用一个了DayOfWeek类型(内部使用的是enum类型表示的星期一到星期日)的变量保存是星期几。我们调用date这个对象的getValue方法来得到星期几的一个数值。这会用到一个整数,按照惯例,周末是一周的末尾,星期一返回1,星期二返回2,依此类推,星期日则返回7。
得到是星期几由于日历的第一行是缩进的,使得月份的第一天指向相应的星期几。
打印星期目录打印好第一行并缩进后,开始依次打印对应的号数了。每打印一天就加一天(plusDays(1)),生成的新对象重新引用给date。如果打印到today,使用*号标记。打印到星期天时,需要换行。
开始打印预打印下一个月份。
换行准备下一个月份
网友评论