• 完善例3.2的日期MyDate


    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+" "+d1+"的昨天是 "+(d2=d1.yestoday()));
    System.out.println(d1+"是 "+d1.toWeekString());
    System.out.println(d1);
    System.out.println(d2);
    }

    }

  • 相关阅读:
    Ceph 之RGW Cache
    Ceph 之RGW Pub-Sub Module
    Ceph 之RGW Data Layout
    RocksDB 之Write Ahead Log(WAL)
    Ceph 之 Background on http frontends
    Ceph 之Multisite 下的bucket reshard
    Ceph之PG数调整
    Ceph之对象存储网关RADOS Gateway(RGW)
    window mysql重启、忘记密码等操作
    selenium处理HTML5视频播放未能自动播放解决办法
  • 原文地址:https://www.cnblogs.com/JW-puppy/p/6854059.html
Copyright © 2020-2023  润新知