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