?? mydate.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) throws WrongDateFormatException{
super(year,month-1,day);
if(!isLegalDate(year,month,day)){
throw new WrongDateFormatException("日期格式不對");
}
}
/**
* 判斷給定的三個年月日值是否合法。
* @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);
}
/**
* 覆蓋的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 + -