Date birthday = new Date();
下面的表达式Local Date.now()会构造一个新对象,表示构造这个对象时的日期。可以提供年、 月和日来构造对应一个特定日期的对象:
LocalDate.of(1999, 12, 31)
当然, 通常都希望将构造的对象保存在一个对象变量中
LocalDate newYearsEve = Local Date.of(1999, 12, 31);
一旦有 了一个 LocalDate 对象, 可以用方法 getYear、 getMonthValue 和 getDayOfMonth得到年、月和日:
int year = newYearsEve.getYearO; // 1999
int month = newYearsEve.getMonthValueO; // 12
int day = newYearsEve.getDayOfMonth(); // 31
看起来这似乎没有多大的意义, 因为这正是构造对象时使用的那些值。不过,有时可能某个日期是计算得到的,你希望调用这些方法来得到更多信息。例如, plusDays 方法会得到一个新的 LocalDate, 如果把应用这个方法的对象称为当前对象,这个新日期对象则是距当前对象指定天数的一个新日期:
LocalDate aThousandDaysLater = newYearsEve.piusDays(1000):
year = aThousandDaysLater.getYearO;// 2002
month = aThousandDaysLater.getMonthValueO; // 09
day = aThousandDaysLater.getDayOfMonth(); // 26
LocalDate 类封装了实例域来维护所设置的日期。如果不查看源代码, 就不可能知道类内部的日期表示。
而Cregori anCalendar someDay = new CregorianCalendar(1999, 11, 31);II Odd feature of that cl ass: month numbers go from 0 to 11
someDay.add(Calendar.DAY_0F_M0NTH, 1000);与 LocalDate.plusDays 方法不同,GregorianCalendar.add 方法是一个更改器方法 ( mutatormethod ) 调用这个方法后,someDay 对象的状态会改变。可以如下査看新状态:
year = someDay.get(Calendar.YEAR); // 2002
month = someDay.get(Calendar.MONTH)+ 1; // 09
day = someDay.get(Ca1endar.DAY_0F_M0NTH); // 26
正是因为这个原因,我们将变量命名为 someDay 而不是 newYearsEve 调用这个更改器方法之后,它不再是新年前夜。
Local Date date = LocalDate.now ();
下面获得当前的月和日。
int month = date.getMonthValue ();
int today = date.getDayOfMonth();
然后, 将 date 设置为这个月的第一天, 并得到这一天为星期几。
date = date.minusDays (today - 1); // Set to start of month
DayOfWeek weekday = date.getDayOfWeek();
int value = weekday .getValue(); // 1 = Monday , .. . 7 = Sunday