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

📄 mydate.java

📁 一个航空管理系统的例子,可以查询航班,增加代理商等功能,大家需要的话可以看看的.
💻 JAVA
字号:
package com.tarena.abs.model;

import java.util.*;

/**
 * 我们自己定义的代表日期的类。继承自java.util.GregorianCalendar
 * @author asus
 *
 */
public final class MyDate extends GregorianCalendar{
	private static final long serialVersionUID = 985437216433215567L;

	/**
	 * 通过给定的年月日值来构造一个日期对象。
	 * @param year 年 
	 * @param month  月
	 * @param day  日
	 * @throws WrongDateFormatException 如果日期格式不对则抛出此异常。
	 */
	public MyDate(int year, int month, int day){
		super(year,month-1,day);
		if(!isLegalDate(year,month,day)){
			throw new IllegalDateFormatException("日期格式不对");
		}
	}
	
	/**
	 * 判断给定的三个年月日值是否合法。
	 * @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){
		StringTokenizer st=new StringTokenizer(str,separator);
		int year=Integer.parseInt(st.nextToken());
		int month=Integer.parseInt(st.nextToken());
		int day=Integer.parseInt(st.nextToken());
		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
	 */
	public int getMonth(){
		return this.get(Calendar.MONTH)+1;
	}
	/**
	 * 
	 * @return
	 */
	public int getDay(){
		return this.get(Calendar.DAY_OF_MONTH);
	}
	
	public int getWeekDay(){
		return this.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();
	}
}

⌨️ 快捷键说明

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