public static void main(String[] args) {
LocalDate localDate = LocalDate.now(); // localDate 2018-09-25
int monthValue = localDate.getMonthValue(); // 得到月份 9
int dayOfMonth = localDate.getDayOfMonth(); // 得到日期 25
localDate = localDate.minusDays(dayOfMonth - 1); // minusDays 当前对象减去指定的天数
DayOfWeek week = localDate.getDayOfWeek(); // SATURDAY
int value = week.getValue(); // 将日期换为数字,星期一就是1,星期二就是2,以此类推,这里value是6
System.out.println("Mon Tue Wed Thu Fri Sat Sun");
for (int i = 1; i < value; i++) {
System.out.print(" ");
}
while(localDate.getMonthValue() == monthValue){
System.out.printf("%3d", localDate.getDayOfMonth());
if (localDate.getDayOfMonth() == dayOfMonth){
System.out.print("*"); // 将今日的日期后面加上一个*
}else {
System.out.print(" ");
}
if (localDate.getDayOfWeek().getValue() == 7){
System.out.println();
}
localDate = localDate.plusDays(1);
}
}
通过 localDate = localDate.minusDays(dayOfMonth - 1),来得到每个月的第一天,minusDays为减去参数天数
LocalDate中的其他方法在结尾显示
System.out.printf的使用方法为,第一个参数是格式控制符,格式控制符以一个%开始,一个字母结束,字母规定了方法按照何种方式打印这个值,例如d表示十进制整数(int),f表示浮点数(double)
格式控制符 | 结果 |
---|---|
%d | 整数 |
%8d | 整数,右对齐,输出宽度为8 |
-6% | 整数,左对齐,输出宽度为6 |
%f | 浮点数 |
%8f | 浮点数,右对齐,输出宽度为8 |
%.2f | 浮点数,精确到百分位 |
%16.3f | 浮点数,精确到千分位,输出宽度为16 |
String同理,只是将d换成s
以下是LocalDate中的常用方法,其余可以查询API
方法名 | 返回值类型 | 对该方法的解释 |
---|---|---|
getYear() | int | 获取当前日期的年份 |
getMonth() | Month | 获取当前日期的月份对象 |
getMonthValue() | int | 获取当前日期是第几月 |
getDayOfWeek() | DayOfWeek | 表示该对象表示的日期是星期几 |
getDayOfMonth() | int | 表示该对象表示的日期是这个月第几天 |
getDayOfYear() | int | 表示该对象表示的日期是今年第几天 |
withYear(int year) | LocalDate | 修改当前对象的年份 |
withMonth(int month) | LocalDate | 修改当前对象的月份 |
withDayOfMonth(int dayOfMonth) | LocalDate | 修改当前对象在当月的日期 |
isLeapYear() | boolean | 是否是闰年 |
lengthOfMonth() | int | 这个月有多少天 |
lengthOfYear() | int | 该对象表示的年份有多少天(365或者366) |
plusYears(long yearsToAdd) | LocalDate | 当前对象增加指定的年份数 |
plusMonths(long monthsToAdd) | LocalDate | 当前对象增加指定的月份数 |
plusWeeks(long weeksToAdd) | LocalDate | 当前对象增加指定的周数 |
plusDays(long daysToAdd) | LocalDate | 当前对象增加指定的天数 |
minusYears(long yearsToSubtract) | LocalDate | 当前对象减去指定的年数 |
minusMonths(long monthsToSubtract) | LocalDate | 当前对象减去注定的月数 |
minusWeeks(long weeksToSubtract) | LocalDate | 当前对象减去指定的周数 |
minusDays(long daysToSubtract) | LocalDate | 当前对象减去指定的天数 |
compareTo(ChronoLocalDate other) | int | 比较当前对象和other对象在时间上的大小,返回值如果为正,则当前对象时间较晚 |
isBefore(ChronoLocalDate other) | boolean | 比较当前对象日期是否在other对象日期之前 |
isAfter(ChronoLocalDate other) | boolean | 比较当前对象日期是否在other对象日期之后 |
isEqual(ChronoLocalDate other) | boolean | 比较两个日期对象是否相等 |