参考博客:https://www.cnblogs.com/IcanFixIt/p/8539007.html
import java.time.DayOfWeek;
import java.time.LocalDate;
public class LocalDateDemo {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2019,06,11); //获取一个时间
int month = date.getMonthValue(); //获取当前时间的月份
int today = date.getDayOfMonth(); //获取当时时间月份中的日期
// System.out.println(month+" "+today); //打印输出月份和日期
/*
将date设置为这个月的第一天(可以这样理解,minusDays是// 给LocalDate减去指定的天数
而减去(today-1)就是减去今天之前的时间就得到了第一天比如今天是19年6月11(星期二),
减去11-1就是减去十天
就是1号。
*/
date =date.minusDays(today-1);
//将date转化为weekday类型 就是 Sunday(日), Monday(一), Tuesday(二),
// Wednesday(三), Thursday(四), Friday(五), Saturday(六)
也就是一周的第几天的英文表示
DayOfWeek weekday = date.getDayOfWeek();
//然后 DayOfWeek 有个getValue方法 把英文转化为数字 比如Monday会转化为1,
Saturday 会转化为6
int value = weekday.getValue() ;
// System.out.println(value);
//日历的第一行可能是缩进的
System . out.println("Mon Tue Wed Thu Fri Sat Sun");
for (int i = 1; i < value ; i++)
System.out.print(" ");
// date.getMonthValue()==month 这个条件的意思是 如果是当前月就一直执行也就是6月
,也就是6
// 后面有个递进条件date=date.plusDays(1);//把date递增直到八月
while(date.getMonthValue()==month){
System.out.printf("%3d",date.getDayOfMonth()); //格式化输出
比如输出第二天就是__2第十五天就是_15
// 看不懂的可以去掉%3d试试
if(date.getDayOfMonth()==today)//若date是当前日期,则用*标记
System.out.print("*");
else
System.out.print(" "); //每输出一个数后再输出一个空格 因为Mon_,Tue_是占四个空格 不加对不上
date = date.plusDays(1);//把date推进到下一天
if(date.getDayOfWeek().getValue()==1)//如果到达新的一周的第一天,则换行打印
System.out.println();
}
if(date.getDayOfWeek().getValue()!=1) //这句个人认为毛都没用呀,不等于1执行,
我这种情况刚好等于1,不执行呀!因为当日期加到8月1号后 还会打印一次空格
System.out.println(); //换做7月11日的时候执行了 就是美化代码的作用
}
}
将会打印
Mon Tue Wed Thu Fri Sat Sun
1 2
3 4 5 6 7 8 9
10 11* 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Process finished with exit code 0
版权声明:本文为m0_37785241原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。