LocalDate之某年某月的日历
直接上代码:
本人之前都是做投资的,虽然本科学的软件,但是没写过代码你懂的。
2020年9月开始重新学java。在大佬门前班门弄斧,见笑了。。
老年人再出发不容易。。轻拍。
代码如下:
//这个例子只打印一个月的日历
import java.time.*;
public class TestLocalDate {
public static void main(String[] ab) {
String[] week={"SUN","MON","TUE","WED","THU","FRI","SAT"};
int month_days=32;//定义超过31天的整数,等会给LocalDate数组
//每个日期存在这个数组里
LocalDate[] ld_month_calendar=new LocalDate[month_days];
int year=2020;//可以修改年份值
int month=11;//可以修改为1-12的任意值
ld_month_calendar[0]=LocalDate.of(year,month,1);//新建一个LocalDate对象,该月第一天
System.out.println(ld_month_calendar[0].getYear()+"年"+ld_month_calendar[0].getMonthValue()+"月的日历如下:");
System.out.println(" "+ld_month_calendar[0].getMonth());//打印月的名称
for (String a:week
) {
System.out.print(a+" ");
}//打印第一行的各个星期几
System.out.print("\n");
for(int i=0;;i++){
ld_month_calendar[i+1]=ld_month_calendar[i].plusDays(1);
//因为plusDays()方法会返回准确的LocalDate,比如下一个月或者下一年的,如果超过该月的日历,那么把最后一个LoacalDate对象赋值为0年1月1日
if(ld_month_calendar[i+1].getMonthValue()>month){ld_month_calendar[i+1]=LocalDate.of(0,1,1);break;}
}
LocalDate j=ld_month_calendar[0];
DayOfWeek dow=j.getDayOfWeek();
int ldoct0=(dow.getValue())%7;
StringBuffer firstdom=new StringBuffer();//先找到这个月的第一天,然后打印出来
//因为之前每个星期几之间是2个空格,所以加上星期几本身,一共5个空格,所以这里
//要乘以5
for(int i=0;i<ldoct0*5;i++){
firstdom=firstdom.append(" ");
}
System.out.print(firstdom.toString()+j.getDayOfMonth());
for(int i=0;;i++){
LocalDate k=ld_month_calendar[i+1];
int d=k.getDayOfMonth();
int g=k.getDayOfWeek().getValue();
if(k.getYear()>0&&d<=10){
if(g!=6&&g!=7){
System.out.print(" "+d);
}
else if(g==7){
System.out.print(d);
}
else System.out.print(" "+d+"\n");
}
else if(k.getYear()>0&&d>10){
if(g!=6&&g!=7){
System.out.print(" "+d);
}
else if(g==7){
System.out.print(d);
}
else System.out.print(" "+d+"\n");
}
if(k.getYear()<=0) break;
}
System.out.println();
}
}
最终结果类似这样的: