1、接收年份
2、接收月份
3、判断是否为闰年或平年
(1)闰年条件:能被4整除并且不能被100整除,或能被400整除
(2)闰年是366天,平年365天
(3)闰年的2月份是29天,平年的2月份是28天
4、月份的天数
(1)每年的1、3、5、7、8、10、12月份都是31天
(2)4、6、9、11月份都是30天
5、1900年1月1日是星期一
2014 1 1之间相差多少年 累积多少天 年数相差天数
2014 8 1 之间相差多少天 月份相差天数 总天数累加 两个年份一共相差多少天
对于星期几 总天数和7相除 整除 余数是0 不整除 1 2 3 4~ 代表星期几
package huqing;
import java.util.Calendar;
public class Exercise0605 {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str = test(2014, 7);
System.out.println(str);
}
private static String test(int year, int month) {
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month - 1);
String str = "日\t一\t二\t三\t四\t五\t六\r";
int day = getDay(year, month - 1);
c.set(Calendar.DAY_OF_MONTH, 1);
str += getStartWeizhi(c);
for (int i = 2; i <= day; i++) {
c.set(Calendar.DAY_OF_MONTH, i);
if (c.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY) {
str += i + "\r";
} else {
str += i + "\t";
}
}
return str;
}
//返回每月天数
private static int getDay(int year, int month) {
int[] DAYS = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
if (month != 2) {
return DAYS[month];
}
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
return 29;
}
return DAYS[month];
}
//获取是星期的第几天 前面留空格
private static String getStartWeizhi(Calendar c) {
int idx = c.get(Calendar.DAY_OF_WEEK);
StringBuffer buf = new StringBuffer();
for (int i = 0; i < idx - 1; i++) {
buf.append(" \t");
}
if (Calendar.SATURDAY == idx) {
buf.append(c.get(Calendar.DAY_OF_MONTH) + "\r");
} else {
buf.append(c.get(Calendar.DAY_OF_MONTH) + "\t");
}
return buf.toString();
}
}