一些无聊的代码之一: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