转自:http://zhidao.baidu.com/question/318137752.html
效果:
2011年 11月
===================================================
Sun Mon Thu Wed The Fri Sat
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16* 17 18 19
20 21 22 23 24 25 26
27 28 29 30
import java.util.Calendar;
public class Test {
public static void main(String[] args){
int i=0,n=0;
//获得今天的日期
Calendar mycal=Calendar.getInstance();
int m=mycal.get(Calendar.MONTH),y=mycal.get(Calendar.YEAR),d=mycal.get(Calendar.DAY_OF_MONTH);
int year=mycal.get(Calendar.YEAR);
int month=mycal.get(Calendar.MONTH);
//输入日期
try
{
year=Integer.parseInt(args[0]);
month=Integer.parseInt(args[1])-1;
}
//处理异常
catch(ArrayIndexOutOfBoundsException e) {
year=mycal.get(Calendar.YEAR);
month=mycal.get(Calendar.MONTH);
}
mycal.set(year,month,1);
System.out.println(" "+year+"年 "+(month+1)+"月");
System.out.println("\t===================================================");
System.out.println("\tSun\tMon\tThu\tWed\tThe\tFri\tSat");
int a=mycal.get(Calendar.DAY_OF_WEEK);//得到每个月第一天是星期几
//Calendar中1-星期天,2-星期一,3-星期二,4-星期三,5-星期四,6-星期五,7-星期六
int b=mycal.get(Calendar.DAY_OF_WEEK);
int maxDate=mycal.getActualMaximum(Calendar.DATE);
//获得一个月的天数
if(a>1)
{
for(n=1;n<a;n++)
System.out.printf("\t");
}
n=n-1;
for(i=1;i<=maxDate;i++,n++)
{
if(n%7==0)
System.out.println();
System.out.printf("\t"+i);
if(month==m&&year==y&&i==d)
System.out.print("*");
}
System.out.println();
}
}