📄 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){
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 + -