# 动态日历简易算法实现

3 篇文章 0 订阅

### 二、具体实现

1.需要知道给定月份的天数
2.需要知道月份的第一天为本月的星期几，来获取日历空格数。

		//获取一个Calendar实例
Calendar c = Calendar.getInstance();
//设置年份为当前年份
c.set(Calendar.YEAR, year);
//设置月份为当前月份
c.set(Calendar.MONTH, month - 1);


		c.set(Calendar.DAY_OF_MONTH, 1);
//获取当天星期几
int weekDay = c.get(Calendar.DAY_OF_WEEK) - 1;
//判断星期天
if(weekDay == 0) {
weekDay = 7;
}


		//获取当前月份具备的最大值(当月总天数)
int days = c.getActualMaximum(Calendar.DAY_OF_MONTH);

System.out.println("-----------------------"+year+"年"+month+"月"+"------------------");
System.out.println("一\t二\t三\t四\t五\t六\t日");
System.out.println("--------------------------------------------------");
//声明一个计数器，统计是否到达7
int count = 0;
//打印输出\t
for (int i = 1; i < weekDay; i++) {
System.out.print("\t");
count ++;
}
//打印天数
for (int i = 1; i <= days; i++) {
if(count == 7) {
System.out.println();
count = 0;
}
System.out.print(i+"\t");
count ++;
}


### 三、整体代码

public class MyCalendar {

private int year;
private int month;

public MyCalendar(int year, int month) {
super();
this.year = year;
this.month = month;
}

public void showCalender() {
//获取一个Calendar实例
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month - 1);
//将日期设置为当月的第一天
c.set(Calendar.DAY_OF_MONTH, 1);
//获取当天星期几
int weekDay = c.get(Calendar.DAY_OF_WEEK) - 1;
if(weekDay == 0) {
weekDay = 7;
}
//获取当前月份具备的最大值(当月总天数)
int days = c.getActualMaximum(Calendar.DAY_OF_MONTH);

System.out.println("-----------------------"+year+"年"+month+"月"+"------------------");
System.out.println("一\t二\t三\t四\t五\t六\t日");
System.out.println("--------------------------------------------------");
//声明一个计数器，统计是否到达7
int count = 0;
//打印输出\t
for (int i = 1; i < weekDay; i++) {
System.out.print("\t");
count ++;
}
//打印天数
for (int i = 1; i <= days; i++) {
if(count == 7) {
System.out.println();
count = 0;
}
System.out.print(i+"\t");
count ++;
}
}

public static void main(String[] args) {
new MyCalendar(2020, 6).showCalender();
}
}


• 3
点赞
• 2
收藏
觉得还不错? 一键收藏
• 2
评论
02-25
03-26 2929
08-26 2117
12-08 3262
09-05
01-05
05-19
08-26
06-03 2073
07-01 4862

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

• 非常没帮助
• 没帮助
• 一般
• 有帮助
• 非常有帮助

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