代码:
public void weekTest() throws ParseException {
Date date = new SimpleDateFormat("yyyy-MM-dd").parse("2011-02-01");
Calendar c = Calendar.getInstance();
c.setTime(date);
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH) + 1;// January is 0
int day = c.get(Calendar.DAY_OF_WEEK_IN_MONTH);
int week = c.get(Calendar.DAY_OF_WEEK);
showEnWeek(week);
showWeekDay(year, month, day);
}
private void showEnWeek(int week) {
String weekStr = "";
switch (week) {
case 1:
weekStr = "Sun";
break;
case 2:
weekStr = "Mon";
break;
case 3:
weekStr = "Tue";
break;
case 4:
weekStr = "Wed";
break;
case 5:
weekStr = "Thu";
break;
case 6:
weekStr = "Fri";
break;
case 7:
weekStr = "Sat";
break;
}
System.out.println(weekStr);
}
public static void showWeekDay(int year, int month, int day) {
char[] ch = new char[] { '日', '一', '二', '三', '四', '五', '六' };
int eclipseDays = 1; // 公元元年一月一日是星期一
eclipseDays += year - 1;
for (int i = 1; i < year; i++) {
if (isBissextile(i))
eclipseDays++;
}
switch (month) {
case 1:
break;
case 2:
eclipseDays += 3;
break;
case 3:
eclipseDays += 3;
break;
case 4:
eclipseDays += 6;
break;
case 5:
eclipseDays += 8;
break;
case 6:
eclipseDays += 11;
break;
case 7:
eclipseDays += 13;
break;
case 8:
eclipseDays += 16;
break;
case 9:
eclipseDays += 19;
break;
case 10:
eclipseDays += 21;
break;
case 11:
eclipseDays += 24;
break;
case 12:
eclipseDays += 26;
}
if (isBissextile(year) && month > 2)
eclipseDays++;
eclipseDays = (eclipseDays + day - 1) % 7;
System.out.println(year + "年" + month + "月" + day + "日是星期"
+ ch[eclipseDays]);
}
public static boolean isBissextile(int year) {
boolean bissextileFlag = false;
if (year % 4 == 0) {
if (year % 100 != 0)
bissextileFlag = true;
else if (year % 400 == 0)
bissextileFlag = true;
}
return bissextileFlag;
}