JAVA-小白入门小程序-动态日历(刚刚入门小白)

    技术2026-01-02  1

    JAVA-小白入门小程序-动态日历

    (本人为刚入门小白,只为学习分享,如有什么不足希望各位大牛指点学习!谢谢!) 第一次写博客,也不知道要写什么,先上效果吧.

    动态日历:

    该程序主要java.util.Calendar类实现.(如不了解Calendar类请往下看)

    Calendar:

    Calendar类是一个抽象类,它有一些日历字段之间的转换方法,并且有获取日历字段的一些方法,如获取某一天是某周的第几天等.(具体内容请进入jdk中查询)(注意事项:Calendar类中,月份是从0月开始计算的,每一周的第一天是星期天.如要了解历史请查询:格里高利历).

    Calendar用到的方法:
    Calendar.getInstance() //通过getInstance方法,获取一个Calendar类型的日历

    使用默认时区和区域设置获取日历。

    set(int field, int value)//设置年月日等时间

    将给定的日历字段设置为给定的值。

    get(int field) //获取指定日历字段

    返回给定日历字段的值。

    getActualMaximum(int field)//获取指定日历字段最大值(如这个月最大有多少天)

    给定此 Calendar的时间值,返回指定日历字段可能具有的 Calendar 。

    分析:

    实现动态日历的核心思想: 我们会想到输入的月份有多少天,该月的第一天是星期几,如何实现空格和换行.用原有的思维,我们需要判断该年是否是闰年,从1900年1月1日到现在多少天(因为1900年1月1日是星期一,是大部分日历的基准日期)来获取这个月第一天为星期几.如此一套操作下来代码量就比较多了. 所以java的util(工具包)中有一个类专门来实现日历的计算(如何实现的请自行看源码).即可以用较少的代码完成该项目.

    设计思路:

    1.输入要查询的年,月把Calendar设置为该年该月的第一天. 2.获取这一天为该星期的第几天(即可获得输出日期前,需要空的个数.(第几天-1)) 3.实现换周换行.(当每输出7次就证明一周过完,既需要回车换行) (练习小程序,所以比较简便.勿喷 T.T)

    代码如下:

    package com.softeem.lesson; import java.util.Calendar; import com.softeem.lesson12.date.LiveTimer; /** * 动态日历小程序 * @author Tsir_6_6 * */ public class Exp04 { /** * * 通过年,月获得日历表 * @param year * @param month */ public void showDate(int year,int month) { /**格里高利历*/ Calendar c = Calendar.getInstance(); /**初始化设置时间的年,月,日(某某年的某某月的第一天)*/ c.set(Calendar.YEAR, year); /**因Calendar是0为第一个月,所以设置月份-1*/ c.set(Calendar.MONTH, month - 1); c.set(Calendar.DAY_OF_MONTH, 1); /**获取这一天是当周的第几天,-1获得前面应空的个数*/ int space = c.get(Calendar.DAY_OF_WEEK) - 1; /**获取这个月的最大天数*/ int maxDay = c.getActualMaximum(Calendar.DAY_OF_MONTH); /**Calendar每星期的第一天为星期天*/ System.out.println("星期天"+"\t"+"星期一"+"\t"+"星期二"+"\t"+"星期三"+"\t"+"星期四"+"\t"+"星期五"+"\t"+"星期六"); System.out.println("=================================================================="); /**输出空格*/ for (int i = 0; i < space; i++) { System.out.print("\t"); } /**输出天数*/ for (int i = 1; i <= maxDay; i++) { /**规划指定格式*/ if(i < 10) { System.out.print("0"+i+"\t"); }else { System.out.print(i+"\t"); } space++; /**天数达到一周换行*/ if(space == 7) { System.out.println(); /**初始化空格数*/ space = 0; } } } public static void main(String[] args) { Exp04 exp = new Exp04(); exp.showDate(2020, 3); } }
    Processed: 0.009, SQL: 9