- 确定月
- 确定日
- 确定本月第一天的日期,minusDays(today-1)
- 确定周几,确定周几所对应的数字,周一——星期一——Monday——1
- 第一行显示,周一,周二,周三...
- 第二行,起始位置之前的地方应该是空字符串,w-1
- 开始打印日,打印今天的日期时,加上*号,如果不是今天加上“ ”
- 继续打印,打印下一天,当打印的日所对应的“周几”是星期一时,要先换行,再进行打印
package one;
import java.time.DayOfWeek;
import java.time.LocalDate;
public class CalendarTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
LocalDate date = LocalDate.now();
int month = date.getMonthValue();
int today = date.getDayOfMonth();
date = date.minusDays(today - 1);
DayOfWeek weekday = date.getDayOfWeek();
int value = weekday.getValue();
System.out.println("周一 周二 周三 周四 周五 周六 周日");
for (int i = 1; i < value; i++)
System.out.print(" ");
while (date.getMonthValue() == month) {
System.out.printf("%3d", date.getDayOfMonth());
if (date.getDayOfMonth() == today)
System.out.print("*");
else {
System.out.print(" ");
}
date = date.plusDays(1);
if (date.getDayOfWeek().getValue() == 1)
System.out.println();
}
// if (date.getDayOfWeek().getValue() != 1)
// System.out.println();
}
}
![](https://img-blog.csdnimg.cn/202108111105099.png)