思想:打印1号前面的空格,再从1号顺序打印到本月的最后一天,其中星期天那天换行。
public class DateDemo {
public static void main(String[] args) {
LocalDate today = LocalDate.now();
//本月第一天和最后一天
LocalDate first =LocalDate.of(today.getYear(),today.getMonth(),1);
LocalDate lastDay =today.with(TemporalAdjusters.lastDayOfMonth());
//本月有多少天
int days= lastDay.get(ChronoField.DAY_OF_MONTH);
//本月第一天是星期几
int firstweek = first.get(ChronoField.DAY_OF_WEEK);
//打印星期
String[] ss={"一","二","三","四","五","六","日"};
for (int i = 0; i < 7; i++) {
System.out.print(" "+ss[i]);
}
System.out.println();
//打印空格
for (int i = 1; i <firstweek ; i++) {
System.out.printf("%-3s"," ");
}
//打印从1-最后一天
for (int i = firstweek,j=1; j <=days; i++,j++) {
if(i%7==0){
System.out.printf("%3d\n",j);
}else{
System.out.printf("%3d",j);
}
}
}
}