⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mydate.java

📁 航空售票系统的代码
💻 JAVA
字号:
package com.tarena.abs.test;

import java.io.Serializable;
import java.util.*;

/**
 * 我们自己定义的代表日期的类。继承自java.util.GregorianCalendar
 * @author tangliang
 *
 */
public final class MyDate extends GregorianCalendar implements Serializable{
	//private Calendar calendar;calendar不能映射
	//private Date date;
	//为了作为组件映射到FlightSch中而定义的属性
//	private int year;
//	private int month;
//	private int day;
	/**
	 * 通过给定的年月日值来构造一个日期对象。
	 * @param year 年 
	 * @param month  月
	 * @param day  日
	 * @throws IllegalDateFormatException 如果日期格式不对则抛出此异常。
	 */
	public MyDate(){
		
	}
	public MyDate(int year, int month, int day){
		super(year,month-1,day); 
//		this.year=year;
//		this.month=month;
//		this.day=day;
		//date= new Date(year,month-1,day);
		//this.setTime(date);
		/*calendar = Calendar.getInstance() ;
		calendar.set(year,month-1,day);*/
		if(!isLegalDate(year,month,day)){
			throw new IllegalDateFormatException("日期格式不对");
		}
	}
	
	
	/*public Date getDate() {
		System.out.println(date);
		return date;
	}
	public void setDate(Date date) {
		System.out.println(date);
		this.date = date;
		this.setTime(date);
	}*/
	/*public Calendar getCalendar() {
		return calendar;
	}
	public void setCalendar(Calendar calendar) {
		this.calendar = calendar;
	}*/
	/**
	 * 判断给定的三个年月日值是否合法。
	 * @param year  年份
	 * @param month  月份
	 * @param day  日期
	 * @return 若合法则返回true,否则返回false。
	 */
	public static boolean isLegalDate(int year,int month,int day){
		int[] daysOfMonth={31,28,31,30,31,30,31,31,30,31,30,31};
		if(year<1900||year>2100||month<1||month>12)
			return false;
		if(isYeap(year)){
			daysOfMonth[1]=29;
		}
		if(day<1||day>daysOfMonth[month-1])
			return false;
		return true;
	}
	
	/**
	 * 判断给定的年份是否是闰年。
	 * @param year  给定的年份
	 * @return  是闰年返回true,否则返回false。
	 */
	public static boolean isYeap(int year){
		if(year%400==0)
			return true;
		if(year%4==0&&year%100!=0)
			return true;
		return false;
	}
	
	/**
	 * 该方法根据给定的分隔符来解析给定的日期字符串,将其构造为一个日期对象。
	 * @param str  给定的日期字符串。
	 * @param separator  分隔符号。
	 * @return  构造好的一个日期对象。
	 */
	public static MyDate getDateFromStr(String str,String separator){
		String[] st = str.split(separator);
		int year=Integer.parseInt(st[0]);
		int month=Integer.parseInt(st[1]);
		int day=Integer.parseInt(st[2]);
		
		return new MyDate(year,month,day);	
	}
	
	/**
	 * 覆盖的equals()方法,若两个日期对象得年月日都相同则返回true,否则返回false。
	 */
	public boolean equals(Object o){
		if(o instanceof MyDate){
			MyDate md=(MyDate)o;
			return md.getYear()==this.getYear()
			        && md.getMonth()==this.getMonth()
			        && md.getDay()==this.getDay();
		}
		return false;
	}
	
	/**
	 * 得到该日期的年份
	 * @return
	 */
	public int getYear(){
		return this.get(Calendar.YEAR);
		//return date.getYear();
		//return this.calendar.get(Calendar.YEAR);

	}
	
	/**
	 * 得到该日期的月份
	 * @return
	 */
	public int getMonth(){
		return this.get(Calendar.MONTH)+1;
		//return date.getMonth()+1;
		//return this.calendar.get(Calendar.MONTH)+1;
	}
	/**
	 * 得到该日期是几号
	 * @return
	 */
	public int getDay(){
		return this.get(Calendar.DAY_OF_MONTH);
		//return date.getDay();
		//return this.calendar.get(Calendar.YEAR);
	}
	
	/**
	 * 得到该日期是星期几
	 * @return
	 */
	public int getWeekDay(){
		//星期7123456,
		//对应值1234567
		return this.get(Calendar.DAY_OF_WEEK);
		//return this.calendar.get(Calendar.DAY_OF_WEEK);
		
	}
	/**
	 * 覆盖的hashCode()方法。
	 */
	public int hashCode(){
		return this.getYear()^
	            this.getMonth()^
	            this.getDay();
	}
	
	/**
	 * 覆盖的toString方法,返回年月日和星期。
	 * 例如: "2007年1月30日 星期二"
	 */
	public String toString(){
		StringBuffer sb=new StringBuffer(this.getYear()+"年"+
			       this.getMonth()+"月"+
			       this.getDay()+"日  ");
		
		switch(this.get(Calendar.DAY_OF_WEEK)){
			case 1: sb.append("星期日"); break;
			case 2: sb.append("星期一"); break;
			case 3: sb.append("星期二"); break;
			case 4: sb.append("星期三"); break;
			case 5: sb.append("星期四"); break;
			case 6: sb.append("星期五"); break;
			case 7: sb.append("星期六"); break;
		}
		return sb.toString();      
	}
	
	/**
	 * 返回使用符号"-"分隔的日期字符串。
	 * 例如:"2007-1-30"
	 * @return
	 */
	public String simpleString(){
		return this.getYear()+"-"+
	       this.getMonth()+"-"+
	       this.getDay();
	}
	public MyDate getNextDay(){
		int y=this.getYear();
		int m=this.getMonth();
		int d=this.getDay();
		if(MyDate.isLegalDate(y,m,d+1))
			return new MyDate(y,m,d+1);
		else if(MyDate.isLegalDate(y,m+1,1))
			return new MyDate(y,m+1,1);
		else if(MyDate.isLegalDate(y+1,1,1))
			return new MyDate(y+1,1,1);
		else return null;
	}
	
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -