
<span style="font-size:18px;">package com.sxt.test; |
|
import java.util.Scanner; |
//使用基础的java代码输出日历 |
public class CalendarTest1 { |
public static void main(String[] args) { |
Scanner s = new Scanner(System.in); |
System.out.println("请输入年份"); |
int year = s.nextInt(); |
System.out.println("请输入一个月份"); |
int month = s.nextInt(); |
printCalendar(year, month); |
} |
/* |
* 打印日历 |
*/ |
private static void printCalendar(int year, int month) { |
// 打印表头 |
System.out.println("星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六"); |
// 打印数字 |
// 1,空格的数量 |
int kongGe = getKongGeCount(year, month); |
// 输出空格 |
for (int i = 1; i <= kongGe; i++) { |
System.out.print("\t"); |
} |
// 解决当1~7日全为上一月的天数时出现的时间跳转问题 |
if (kongGe == 7) { |
System.out.println(); |
} |
// 输出数字 |
for (int i = 1; i <= getDaysOfMonth(year, month); i++) { |
System.out.print(i + "\t"); |
if ((i + kongGe) % 7 == 0) { |
System.out.println(); |
} |
} |
} |
|
// 获取空格的数量 |
private static int getKongGeCount(int year, int month) { |
int count = getDaysOfAll(year, month) % 7 + 1; |
return count; |
} |
|
// 所有的天数 |
private static int getDaysOfAll(int year, int month) { |
// 整年的天数 + 整月的天数 |
int sum = 0; |
// 1,整年的天数 |
for (int i = 1900; i < year; i++) { |
sum += isLoopYear(i) ? 366 : 365; |
} |
// 2,整月的天数 |
for (int i = 1; i < month; i++) { |
sum += getDaysOfMonth(year, i); |
} |
|
return sum; |
} |
|
/** |
* 获取整月的天数 |
* |
* @param year |
* @param month |
* @return |
*/ |
private static int getDaysOfMonth(int year, int month) { |
int day = 0; |
switch (month) { |
case 1: |
case 3: |
case 5: |
case 7: |
case 8: |
case 10: |
case 12: |
day = 31; |
break; |
case 4: |
case 6: |
case 9: |
case 11: |
day = 30; |
break; |
case 2: |
day = isLoopYear(year) ? 29 : 28; |
break; |
} |
return day; |
} |
|
// 判断是否是闰年 |
private static boolean isLoopYear(int year) { |
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) { |
return true; |
} else { |
return false; |
} |
} |
}</span> |



