LocalDate类之某年某月的日历

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();
    }
}

最终结果类似这样的:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值