public class MyDate
{
private int year,month,day;
private static int thisYear;
static {thisYear=2012;}
public MyDate(int year,int month,int day) {this.set(year,month,day);}
public MyDate() {this(1970,1,1);}
public MyDate(MyDate d) {this.set(d);}
public void set(int year,int month,int day)
{
this.year=year;
this.month=(month>=1&&month<=12)?month:1;
this.day=(day>=1&&day<=31)?day:1;
}
public void set(MyDate d)
{
set(d.year,d.month,d.day);
}
public int getYear()
{
return this.year;
}
public int getMonth()
{
return this.month;
}
public int getDay()
{
return this.day;
}
public String toString()
{
return year+"年"+String.format("%02d",month)+"月"+String.format("%02d",day)+"日";
}
public static int getThisYear()
{
return thisYear;
}
public static boolean isLeapYear(int year)
{
return year%400==0||year%100!=0&&year%4==0;
}
public boolean isLeapYear()
{
return isLeapYear(this.year);
}
public boolean equals(MyDate d)
{
return this==d||d!=null&&this.year==d.year&& this.month==d.month &&this.day==d.day;
}
public static int daysOfMonth(int year,int month)
{
switch(month)
{
case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31;
case 4: case 6: case 9: case 11: return 30;
case 2: return MyDate.isLeapYear(year)?29:28;
default: return 0;
}
}
public int daysofMonth()
{
return daysOfMonth(this.year,this.month);
}
public void tomorrow()
{
this.day++;
if(this.day>this.daysofMonth())
{
this.day=1;
this.month++;
if(this.month>12)
{
this.month=1;
this.year++;
}
}
}
public MyDate yestoday()
{
MyDate date=new MyDate(this);
date.day--;
if(date.day==0)
{
date.month--;
if(date.month==0)
{
date.month=12;
date.year--;
}
date.day=daysOfMonth(date.year,date.month);
}
return date;
}
public int getWeek()
{
int i,j=0;
for(i=0;i<this.year;i++)
{
if(MyDate.isLeapYear(i))
j++;
if(j>6)
j=0;
}
for(i=0;i<this.month;i++)
{
i+=MyDate.daysOfMonth(this.year, this.month);
}
j+=i%7;
if(j>6)
j-=7;
return j;
}
public String toWeekString()
{
int i;
i=getWeek();
switch(i)
{
case 0:return "星期一";
case 1:return "星期二";
case 2:return "星期三";
case 3:return "星期四";
case 4:return "星期五";
case 5:return "星期六";
case 6:return "星期天";
}
return null;
}
}
class MyDate_ex
{
public static void main(String args[])
{
System.out.println("今年是"+MyDate.getThisYear()+",闰年?"+MyDate.isLeapYear(MyDate.getThisYear()));
MyDate d1=new MyDate(2012,12,31);
MyDate d2=new MyDate(d1);
System.out.println("d1: "+d1+",d2: "+d2+",d1==d2? "+(d1==d2)+", d1.equals(d2)? "+d1.equals(d2));
System.out.print(d1+"的明天是 ");
d1.tomorrow();
System.out.println(d1+"\n"+d1+"的昨天是 "+(d2=d1.yestoday()));
System.out.println(d1+"是 "+d1.toWeekString());
System.out.println(d1);
System.out.println(d2);
}
}