Java中怎么实现动态日历效果

本篇文章为大家展示了Java中怎么实现动态日历效果,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

题目:动态日历

Java中怎么实现动态日历效果

输入年份,月份,显示当前月份日历布局

分析

实现日历的基本思想为:确定一个基准日期,计算从基准日期到指定年份月份的前一个月的总天数,计算这个总天数的前提为判断指定年份是否是闰年(闰年是可以被400整除或者可以被4整除但不被100整除的年份),利用总天数除以7的余数可以确定当前月份前面的空格数,要想简单的使此余数为空格数,则基准日期必须为1月1日并且是星期一,大部分日历的基准日期为1900年1月1日,并且这一天是星期一,可以更简单实现动态日历。

步骤分析

1:判断指定年份是否是闰年2:计算从1900年1月到目标年份月份的前一个月总天数3:根据提供的月份获取当月总天数4:获取打印当前月信息时要输出的空格数5:打印日历

代码实现

Calendar类:

packagecom.softeem.j2106.oop2;

/**
*动态日历:
*输入年份,月份,显示当前月份日历布局
*@authorxcc
*2021/7/12
*/
publicclassCalendar{
/**
*日历年份
*/
intyear;
/**
*日历月份
*/
intmonth;

/**
*构造函数,创建日历对象时指定日历的年份和月份
*@paramy
*@paramm
*/
publicCalendar(inty,intm){
year=y;
month=m;
}

/**
*计算从1900年1月开始到当前日期的前一个月的总天数
*@return
*/
publicintgetTotalDaysFrom1900(){
intdays=0;
//统计整年的天数
for(inti=1900;i<year;i++){
days+=isLeapYear(i)?366:365;
}
//统计整月的天数
for(inti=1;i<month;i++){
days+=getDaysOfMonth(i);
}
returndays;
}

/**
*根据提供的月份,获取当月的总天数
*@paramm
*@return
*/
publicintgetDaysOfMonth(intm){
switch(m){
case4:
case6:
case9:
case11:
return30;
case2:
returnisLeapYear(year)?29:28;
default:
return31;
}
}

/**
*返回参数年份是否是闰年
*@paramyear
*@return
*/
publicbooleanisLeapYear(intyear){
returnyear%4==0&&year%100!=0||year%400==0;
}

/**
*显示日历布局
*/
publicvoidshow(){
System.out.println("现在是:"+year+"年"+month+"月");
System.out.println("==SOFTEEM万年历【"+year+"】年【"+month+"】月==");
System.out.println("一\t二\t三\t四\t五\t六\t日");
System.out.println("===============================");

//获取日历前的空格数(当月的第一天是周几)
intspace=getTotalDaysFrom1900()%7;
//获取当月总天数
intdays=getDaysOfMonth(month);
intcount=0;
//输出空格
for(inti=0;i<space;i++){
count++;
System.out.print("\t");
}
//输出日期
for(inti=1;i<=days;i++){
System.out.print(i+"\t");
count++;
//如果计数器是7的倍数,说明已经打印一周,需要换行
if(count%7==0){
System.out.println();
}
}

}


publicstaticvoidmain(String[]args){
Calendarc=newCalendar(2021,8);
c.show();
}
}

上述内容就是Java中怎么实现动态日历效果,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注恰卡编程网行业资讯频道。

发布于 2021-07-29 22:00:20
收藏
分享
海报
0 条评论
182
上一篇:VScode中如何使用fortran 下一篇:Docker中怎么部署MySQL8集群
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码