һЩÎÞÁĵĴúÂëÖ®Ò»£ºJAVAÖеÄÈÕÆÚ¼ÆËã
/*
* DateCalculate.java , Created on 2005-3-18
* Copyright 2005 AAA Information Technology CO.LTD. All rights reserved.
*
* ×÷³ÉÈÕÆÚ: 2005-3-18
* ÐÞ¸ÄÂÄÀú:
*
*/
package com.bjb.xyh.util;
import java.text.DecimalFormat;
//import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* ÀàÃèÊö£º×Ô¼ºÊµÏÖµÄÈÕÆÚ¼ÆËãÀ࣬¿ÉÒÔ×ÔÓÉÀ©Õ¹
* @author xieyh lamp5w@yahoo.com.cn
* @version build 2005-3-18
*
*/
public class DateCalculate {
/** ×¢Òâ¸ñÀïÀúºÍÈåÂÔÀú½»½ÓʱµÄÈÕÆÚ²î±ð */
private static transient int gregorianCutoverYear = 1582;
/** ÈòÄêÖÐÿÔÂÌìÊý */
private static final int[] DAYS_P_MONTH_LY=
{31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
/** ƽÄêÖÐÿÔÂÌìÊý */
private static final int[] DAYS_P_MONTH_CY=
{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
/** ´ú±íÊý×éÀïµÄÄê¡¢Ô¡¢ÈÕ */
private static final int Y = 0, M = 1, D = 2;
/** ²ÎÓëÔËËãÓà */
private int[] ymd = null;
/**
* ¼ì²é´«ÈëµÄ²ÎÊýÊÇ·ñºÏ·¨µÄÈÕÆÚ
* @param date
* @throws IllegalArgumentException
*/
public static void validate(String date)throws IllegalArgumentException{
int[] ymd = splitYMD( date );
if( ymd[M] == 0 || ymd[M] > 12 ){
throw new IllegalArgumentException("Ô·ÝÊýÖµ´íÎó");
}
if( true == isLeapYear( ymd[0] ) ){
if( ymd[D] == 0 || ymd[D] > DAYS_P_MONTH_LY[ymd[M] -1 ] ){
throw new IllegalArgumentException("ÈÕÆÚÊýÖµ´íÎó");
}
}else{
if( ymd[D] == 0 || ymd[D] > DAYS_P_MONTH_CY[ymd[M] -1 ] ){
throw new IllegalArgumentException("ÈÕÆÚÊýÖµ´íÎó");
}
}
}
/**
* ¼ì²é´«ÈëµÄ²ÎÊý´ú±íµÄÄê·ÝÊÇ·ñΪÈòÄê
* @param year
* @return
*/
public static boolean i