• java学习日记----------------------封装的日期类MyDate


       昨天在课堂上听老师讲月历的程序,自己动手实现了一下。这里分享一个封装的日期类。

    package ToolPackage;
    
    public class MyDate {
          private int year,month,day; //私有成员变量
          private static int thisYear; //当前年份,私有静态成员变量
          static{
              thisYear = 2015;
          }
          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.day=day;
              this.month=month;
              this.year=year;
          }
          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 this.year+"年"+this.month+"月"+this.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){//比较当前日期和d是否相等
              return this==d||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 isLeapYear(year)?29:28;
              default :return 0;
              }
          }
          public int daysOfMonth(){//返回当月天数
              return daysOfMonth(this.year,this.month);
          }
          public void tomorrow(){//当前日期改为第二天日期
              this.day++;
              if(day>this.daysOfMonth()){
                  day=1;
                  month++;
                  if(month>12){
                      month=1;
                      year++;
                  }
              }
          }
          public MyDate yestoday(){//返回当前日期的前一天日期
              MyDate yes=new MyDate(this);//执行拷贝构造函数,创建新实例,没有改变当前对象
              yes.day--;
              if(yes.day==0){
                  yes.month--;
                  if(yes.month==0){
                      yes.month=12;
                      yes.year--;
                  }
                 yes.day=daysOfMonth(yes.year,yes.month);
              }
             return yes; //返回对象引用
          }
          
    }

    --------------------顺便分享一下月历吧------------------------------

    package teacherHomework;
    
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import ToolPackage.MyDate;
    
    public class MonthCalendar {
        public String toString (){
            Calendar now = Calendar.getInstance();//当前日期时间
            int year = now.get(Calendar.YEAR);//年份
            int month = now.get(Calendar.MONTH)+1;//月份
            now.set(year, month-1, 1);//设置当月1号
            int week = now.get(Calendar.DAY_OF_WEEK)-1;
            String str=year+"年"+month+"月的月历
         日       一      二      三     四       五     六
    ";
            str+=String.format("%"+4*week+"c",' ');//设置前导空格
            int days= MyDate.daysOfMonth(year,month);   //计算出当月天数
            for(int i=1;i<=days;i++){
                str+=String.format("%4d", i);
                if((week+i)%7==0)
                    str+="
    ";
            }
            return str;
        }
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
              SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日EEEEE a hh 时mm分ss秒");
              System.out.println(sdf.format(new Date()));//当前日期和时间
              System.out.println(new MonthCalendar().toString());
        }
    
    }
  • 相关阅读:
    高可用性机制
    Moodle课程资源系统安装
    Windows 10 安装 chocolatey
    centos7安装samba服务器
    抽签网页板代码
    CentOS7系统操作httpd服务
    centos7.2下放行端口
    centos7没有netstat命令的解决办法
    Linux
    Linux下常用服务的端口号超详细整理
  • 原文地址:https://www.cnblogs.com/he-shao/p/4867849.html
Copyright © 2020-2023  润新知