日期工具类

1.
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;



/**
 * @author cui 2004-12-21 Table-TableManagementData
 */
public class DateUtil {

	public final static String ORACLE_DATE_PATTERN = "YYYY-MM-DD HH24MISS";

	public final static String DEFAULT_DATE_PATTERN = "yyyy-MM-dd HHmmss";

	public final static String FULL_DATE_PATTERN = "yyyy-MM-dd HH:mm:ss";

	public final static String LONG_DATE_PATTERN = "yyyy-MM-dd HH:mm:ss:SSS";

	public final static String SHORT_DATE_PATTERN = "yyyy-MM-dd";

	public final static String DATE_PATTERN = "yyyyMMddHHmmss";

	private final static Log logger = LogFactory.getLog(DateUtil.class);

	/**
	 * 
	 */
	public DateUtil() {
	}

	/**
	 * 返回日期中的年份
	 * @author cui 
	 * @date Jun 26, 2009
	 * @param date 日期参数
	 * @param strFormat 格式串
	 * @return 
	 */
	public static int getInt(Date date, String strFormat) {
		Calendar c = Calendar.getInstance();
		c.setTime(date);
		return c.get(Calendar.YEAR);

	}

	/**
	 * 返回给定日期的格式化串
	 * @author cui 
	 * @date Jun 26, 2009
	 * @param timeStamp 时间对像
	 * @return 返回格式为yyyy年MM月dd日 HH时mm分ss秒
	 */
	public static String getFormatDate(Timestamp timeStamp) {
		String strRet = null;
		if (timeStamp == null)
			return strRet = " ";
		SimpleDateFormat simple = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
		if (simple != null)
			strRet = simple.format(timeStamp);
		return strRet;
	}

	/**
	 * 返回给定日期的格式化串
	 * @author cui  
	 * @date Jun 26, 2009
	 * @param date 日期对像
	 * @return 返回yyyy年MM月dd日 HH时mm分ss秒
	 */
	public static String getFormatDate(java.sql.Date date) {

		String strRet = null;
		if (date == null) {
			return strRet = " ";
		}
		SimpleDateFormat simple = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
		if (simple != null)
			strRet = simple.format(date);
		return strRet;
	}

	/**
	 * 返回当日日期的格式化串,格式为format
	 * @author cui 
	 * @date Jun 26, 2009
	 * @param format 格式化串
	 * @return 返回被格式化的当日日期
	 */
	public static String getTodayDate(String format) {
		String strRet = null;
		SimpleDateFormat simple = new SimpleDateFormat(format);
		if (simple != null)
			strRet = simple.format(new Date());
		return strRet;
	}

	/**
	 * 返回当日日期的格式化串
	 * @author cui
	 * @date Jun 26, 2009
	 * @return 格式为yyyy-MM-dd
	 */
	public static String getTodayDay() {
		String strRet = null;
		SimpleDateFormat simple = new SimpleDateFormat(SHORT_DATE_PATTERN);
		if (simple != null)
			strRet = simple.format(new Date());
		return strRet;
	}

	/**
	 * 返回昨日日期的格式化串
	 * @author cui
	 * @date Jun 26, 2009
	 * @return 格式为yyyy-MM-dd
	 */
	public static String getYesterDay() {
		String strRet = null;
		SimpleDateFormat simple = new SimpleDateFormat(SHORT_DATE_PATTERN);
		if (simple != null)
			strRet = simple.format(addDateByDay(new Date(), -1));
		return strRet;
	}

	/**
	 * 返回给定日期的格式化串
	 * @author cui 
	 * @date Jun 26, 2009
	 * @param date 日期参数
	 * @return 格式为yyyy-MM-dd
	 */
	public static String getDayByDate(Date date) {
		String strRet = null;
		SimpleDateFormat simple = new SimpleDateFormat(SHORT_DATE_PATTERN);
		if (simple != null)
			strRet = simple.format(date);
		return strRet;
	}

	/**
	 * 格式化日期,去掉日期中的时间
	 * @author cui 
	 * @date Jun 26, 2009
	 * @param date 日期参数
	 * @return 返回忽略日期中的时间部分的日期
	 */
	public static Date getDay(java.util.Date date) {
		String strDate = getFormatDate(date, SHORT_DATE_PATTERN);
		if (!StringUtil.isEmpty(strDate)) {
			return getDate(strDate, SHORT_DATE_PATTERN);
		}
		return null;
	}

	/**
	 * 获取给定日期的格式化串
	 * @author cui 
	 * @date Jun 26, 2009
	 * @param date 日期参数
	 * @param strFormat 格式化串
	 * @return 返回被格式化的日期串,如果日期参数为空返回 
	 */
	public static String getFormatDate(java.sql.Date date, String strFormat) {
		String strRet = null;
		if (date == null) {
			return strRet = " ";
		}
		SimpleDateFormat simple = new SimpleDateFormat(strFormat);
		if (simple != null)
			strRet = simple.format(date);
		return strRet;
	}

	/**
	 * 对给定日期按格式strFormat进行格式化串处理,并将处理结果按格式toFromat转为日期(如把日期格式化为串yyyy-MM-dd 23:59:59,再接着把串变为日期)
	 * @author cui
	 * @date Jun 26, 2009
	 * @param date 日期参数
	 * @param strFormat 日期格式化串
	 * @param toFromat 日期格式化串
	 * @return 格式化好的日期
	 */
	public static Date getDate(Date date, String strFormat, String toFromat) {
		String strRet = null;
		Date rtnDate = null;
		SimpleDateFormat simple = new SimpleDateFormat(strFormat);
		if (simple != null) {
			strRet = simple.format(date);
		}
		simple = new SimpleDateFormat(toFromat);
		if (simple != null) {
			try {
				rtnDate = simple.parse(strRet);
			} catch (ParseException e) {
			}
		}
		return rtnDate;
	}

	/**
	 * 获取某个日期(格式必须为yyyy-MM-dd)的起始时间(时间精确到00:00:00)
	 * @author cui
	 * @date Jun 26, 2009
	 * @param date 日期串,格式为yyyy-MM-dd
	 * @return 起始日期
	 */
	public static Date getBeginDate(String date) {
		if (date!=null && !"".equals(date)) {
			String beginDate = date + " 00:00:00";
			return DateUtil.getDate(beginDate, FULL_DATE_PATTERN);
		}
		return null;
	}

	/**
	 * 获取某个日期的结束时间(时间精确到23:59:59:999) 
	 * @author cui 
	 * @date Jun 26, 2009
	 * @param date 日期串,格式为yyyy-MM-dd
	 * @return 结束时间
	 */
	public static Date getEndDate(String date) {
		if (date!=null && !"".equals(date)) {
			String beginDate = date + " 23:59:59:999"; 
			return DateUtil.getDate(beginDate, LONG_DATE_PATTERN);
		}
		return null;
	}

	/**
	 * 返回当天的起始时间
	 * @author cui
	 * @date Jun 26, 2009
	 * @return
	 */
	public static Date getStartCurrentDay() {
		String date = getFormatDate(new Date(), "yyyy-MM-dd 00:00:00");
		return getDate(date, "yyyy-MM-dd HH:mm:ss");
	}

	/**
	 * 返回当天的结束时间
	 * @author cui
	 * @date Jun 26, 2009
	 * @return
	 */
	public static Date getEndCurrentDay() {
		String date = getFormatDate(new Date(), "yyyy-MM-dd 23:59:59:999");
		return getDate(date, "yyyy-MM-dd HH:mm:ss:SSS");
	}

	/**
	 * 获取某个日期累加指定天数后的起始时间
	 * @author cui 
	 * @date Jun 26, 2009
	 * @param day 日期参数
	 * @param i 累加天数
	 * @return 起始时间
	 */
	public static Date getStartDay(Date day, int i) {
		String date = getFormatDate(addDateByDay(day, i), "yyyy-MM-dd 00:00:00");
		return getDate(date, "yyyy-MM-dd HH:mm:ss");
	}

	/**
	 * 获取某个日期累加指定天数后的结束时间
	 * @author cui
	 * @date Jun 26, 2009
	 * @param day 日期参数
	 * @param i 累加天数
	 * @return 结束时间
	 */
	public static Date getEndDay(Date day, int i) {
		String date = getFormatDate(addDateByDay(day, i), "yyyy-MM-dd 23:59:59:999");
		return getDate(date, "yyyy-MM-dd HH:mm:ss:SSS");
	}

	/**
	 * 获取明日的起始时间
	 * @author cui 
	 * @date Jun 26, 2009
	 * @return 起始时间
	 */
	public static Date getStartNextDay() {
		String date = getFormatDate(addDateByDay(new Date(), 1), "yyyy-MM-dd 00:00:00");
		return getDate(date, "yyyy-MM-dd HH:mm:ss");
	}

	/**
	 * 获取本周的第一天
	 * @author cui
	 * @date Jun 26, 2009
	 * @return 本周的第一天
	 */
	public static Date getWeekFirstDay() {
		Calendar c = Calendar.getInstance();
		c.setTime(DateUtil.getDay(c.getTime()));
		c.set(Calendar.DAY_OF_WEEK, 1);
		return c.getTime();
	}

	/**
	 * 获取当前日期累加指定天数后的起始时间
	 * @author cui 
	 * @date Jun 26, 2009
	 * @param i 累加天数
	 * @return
	 */
	public static Date getNextDay(int i) {
		String date = getFormatDate(addDateByDay(new Date(), i), "yyyy-MM-dd 00:00:00");
		return getDate(date, "yyyy-MM-dd HH:mm:ss");
	}

	/**
	 * 获取当前日期累加指定天数的格式化时间(例:可以直接获取明天的12:30:00的时间)
	 * @author cui 
	 * @date Jun 26, 2009
	 * @param i 累加天数
	 * @param strFormat 格式化串(如yyyy-MM-dd 12:30:00)
	 * @return 时间
	 */
	public static Date getNextDay(int i, String strFormat) {
		String date = getFormatDate(addDateByDay(new Date(), i), strFormat);
		return getDate(date, "yyyy-MM-dd HH:mm:ss");
	}

	/**
	 * 获取某个日期某个格式化的时间(例:可以获取某个日期的12:30:00的时间)
	 * @author cui 
	 * @date Jun 26, 2009
	 * @param cdate 日期参数
	 * @param strFormat 格式化串(如yyyy-MM-dd 12:30:00)
	 * @return 时间
	 */
	public static Date getDate(Date cdate, String strFormat) {
		String date = getFormatDate(cdate, strFormat);
		return getDate(date, "yyyy-MM-dd HH:mm:ss");
	}

	/**
	 * 返回某个日期的格式化串
	 * @author cui 
	 * @date Jun 26, 2009
	 * @param date 日期参数
	 * @param strFormat 格式化串
	 * @return 格式化串(如果参数为空返回空串)
	 */
	public static String getFormatDate(Date date, String strFormat) {
		String strRet = null;
		if (date == null) {
			return strRet = "";
		}
		SimpleDateFormat simple = new SimpleDateFormat(strFormat);
		if (simple != null)
			strRet = simple.format(date);
		return strRet;
	}

	/**
	 * 返回某个时间的格式化串
	 * @author cui 
	 * @date Jun 26, 2009
	 * @param timeStamp 时间参数
	 * @param strFormat 格式化串
	 * @return 格式化串(如果参数为空返回 )
	 */
	public static String getFormatDate(Timestamp timeStamp, String strFormat) {
		String strRet = null;
		if (timeStamp == null)
			return strRet = " ";
		try {
			SimpleDateFormat simple = new SimpleDateFormat(strFormat);
			if (simple != null) {
				strRet = simple.format(timeStamp);
			}
		} catch (Exception e) {
			logger.error("Formate Date Error" + e.getMessage(), e);
		}
		return strRet;
	}

	/**
	 * 返回当天的年月日串
	 * @author cui 
	 * @date Jun 26, 2009
	 * @return 返回格式化串(yyMMdd)
	 */
	public static String yyMMdd() {
		SimpleDateFormat simple = new SimpleDateFormat("yyMMdd");
		Date date = new Date();
		return simple.format(date);
	}

	/**
	 * 返回当天的年月串
	 * @author cui 
	 * @date Jun 26, 2009
	 * @return 返回格式化串(yyMM)
	 */
	public static String yyMM() {
		SimpleDateFormat simple = new SimpleDateFormat("yyMM");
		Date date = new Date();
		return simple.format(date);
	}

	/**
	 * 是否同一个月
	 * @param date1
	 * @param date2
	 * @return
	 */
	public static boolean isSameMonth(Date date1, Date date2) {
		if (date1 == null || date2 == null) {
			return false;
		}
		Calendar c = Calendar.getInstance();
		int m1, m2;
		c.setTime(date1);
		m1 = c.get(Calendar.MONTH);
		c.setTime(date2);
		m2 = c.get(Calendar.MONTH);
		return m1 == m2;
	}

	/**
	 * 是否同一个小时
	 * @param date1
	 * @param date2
	 * @return
	 */
	public static boolean isSameHour(Date date1, Date date2) {
		if (date1 == null || date2 == null) {
			return false;
		}
		Calendar c = Calendar.getInstance();
		int m1, m2;
		c.setTime(date1);
		m1 = c.get(Calendar.HOUR_OF_DAY);
		c.setTime(date2);
		m2 = c.get(Calendar.HOUR_OF_DAY);
		return m1 == m2;
	}

	/**
	 * 是否同一天
	 * @param date1
	 * @param date2
	 * @return
	 */
	public static boolean isSameDay(Date date1, Date date2) {
		if (date1 == null || date2 == null) {
			return false;
		}
		String str1 = DateUtil.getDayByDate(date1);
		String str2 = DateUtil.getDayByDate(date2);
		return str1.equals(str2);
	}

	/**
	 * 获取下月的每一天
	 * @author cui
	 * @date Jun 26, 2009
	 * @return 日期
	 */
	public static Date getNextMonthDay() {
		Calendar c = Calendar.getInstance();
		c.add(Calendar.MONTH, 1);
		c.set(Calendar.DAY_OF_MONTH, 1);
		return c.getTime();
	}

	/**
	 * 获取上月的第一天起始时间
	 * @author cui 
	 * @date Jun 26, 2009
	 * @return 日期
	 */
	public static Date getPreviousMonthFirstDay() {
		Calendar c = Calendar.getInstance();
		c.set(Calendar.HOUR_OF_DAY, 0);
		c.set(Calendar.MINUTE, 0);
		c.set(Calendar.SECOND, 0);
		c.set(Calendar.MILLISECOND, 0);
		c.add(Calendar.MONTH, -1);
		c.set(Calendar.DAY_OF_MONTH, 1);
		return c.getTime();
	}

	/**
	 * 获取上月第一天的结束时间
	 * @author cui 
	 * @date Jun 26, 2009
	 * @return
	 */
	public static Date getPreviousMonthLastDay() {
		Calendar cl = Calendar.getInstance();
		cl.set(Calendar.DAY_OF_MONTH, 0);
		cl.set(Calendar.HOUR_OF_DAY, 23);
		cl.set(Calendar.MINUTE, 59);
		cl.set(Calendar.SECOND, 59);
		return cl.getTime();
	}

	/**
	 * 获取本月的第一天
	 * @author cui 
	 * @date Jun 26, 2009
	 * @return
	 */
	public static Date getDateByCurrentMonth() {
		Calendar c = Calendar.getInstance();
		c.setTime(DateUtil.getDay(c.getTime()));
		c.set(Calendar.DAY_OF_MONTH, 1);
		return c.getTime();
	}

	/**
	 * 获取指定日期当月的每一天日期
	 * @author cui
	 * @date Jun 26, 2009
	 * @param currentDate
	 * @return
	 */
	public static Date getNextMonthDay(Date currentDate) {
		Calendar c = Calendar.getInstance();
		c.setTime(currentDate);
		c.add(Calendar.MONTH, 1);
		c.set(Calendar.DAY_OF_MONTH, 1);
		return c.getTime();
	}

	/**
	 * 日期是否是当前月
	 * @author cui 
	 * @date Jun 26, 2009
	 * @param date
	 * @return
	 */
	public static boolean isCurrentMonth(Date date) {
		if (date == null) {
			return false;
		}
		Calendar c = Calendar.getInstance();
		int m1 = c.get(Calendar.MONTH);
		c.setTime(date);
		int m2 = c.get(Calendar.MONTH);
		return m1 == m2;
	}

	/**
	 * 获取当天是周的第几天减1
	 * @author cui 
	 * @date Jun 26, 2009
	 * @return
	 */
	public static int getWeekDay() {
		int weekday;
		Calendar tmp = Calendar.getInstance();
		weekday = tmp.get(Calendar.DAY_OF_WEEK) - 1;
		return weekday;
	}

	/**
	 * 获取当前日期是星期几的文字描述
	 * @author cui 
	 * @date Jun 26, 2009
	 * @return
	 */
	public static String getWeekText() {
		String txt = "星期";
		int weekday;
		Calendar tmp = Calendar.getInstance();
		weekday = tmp.get(Calendar.DAY_OF_WEEK) - 1;
		switch (weekday) {
		case 1:
			txt += "一";
			break;
		case 2:
			txt += "二";
			break;
		case 3:
			txt += "三";
			break;
		case 4:
			txt += "四";
			break;
		case 5:
			txt += "五";
			break;
		case 6:
			txt += "六";
			break;
		case 0:
			txt += "日";
			break;
		}
		return txt;
	}

	/**
	 * 获取格式化日期
	 * @author cui 
	 * @date Jun 26, 2009
	 * @param time
	 * @param 格式化串
	 * @return
	 */
	public static Date getDate(String time, String strFormat) {
		Date date = null;
		if (time == null || time.equals("")) {
			return date = null;
		}
		time = StringUtil.dealNull(time);
		try {
			SimpleDateFormat simple = new SimpleDateFormat(strFormat);
			date = simple.parse(time);
		} catch (Exception e) {
			logger.error("Get Date Error!" + e.getMessage(), e);
		}
		return date;
	}

	/**
	 * 更新日期的日分秒
	 * @author cui
	 * @date Jun 26, 2009
	 * @param date 日期参数
	 * @param hh 小时
	 * @param mm 分数
	 * @param ss 秒
	 * @return
	 */
	public static Date getDate(Date date, int hh, int mm, int ss) {
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		cal.set(Calendar.HOUR_OF_DAY, hh);
		cal.set(Calendar.MINUTE, mm);
		cal.set(Calendar.SECOND, ss);
		return cal.getTime();
	}

	/**
	 * 给日期累加指定天数并返回累加后的日期
	 * @author cui
	 * @date Jun 26, 2009
	 * @param date 日期参数
	 * @param day 累加天数
	 * @return 返回累加后的日期
	 */
	public static Date absoluteDate(Date date, int day) {
		if (date == null) {
			return new Date();
		}
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		cal.add(Calendar.DAY_OF_YEAR, day);
		return cal.getTime();
	}

	/**
	 *  给当天日期累加指定天数并返回累加后的日期
	 * @author cui 
	 * @date Jun 26, 2009
	 * @param day 累加天数
	 * @return 返回累加后的日期
	 */
	public static Date absoluteDate(int day) {
		Calendar cal = Calendar.getInstance();
		cal.setTime(new Date());
		cal.add(Calendar.DAY_OF_YEAR, day);
		return cal.getTime();
	}


	/**
	 * 把串转为日期
	 * @author 作者 
	 * @date Jun 26, 2009
	 * @param time 日期串
	 * @param strFormat 格式化串
	 * @return 时间
	 */
	public static Timestamp getTimestampDate(String time, String strFormat) {
		Timestamp tsmp = null;
		if (time == null) {
			return tsmp = null;
		}

		time = StringUtil.dealNull(time);
		try {
			SimpleDateFormat simple = new SimpleDateFormat(strFormat);
			java.util.Date date = simple.parse(time);
			tsmp = new Timestamp(date.getTime());
		} catch (Exception e) {
			logger.error("Get Timestamp Error!" + e.getMessage(), e);
		}
		return tsmp;
	}

	/**
	 * 给日期累加指定天数并返回累加后的日期
	 * @author cui 
	 * @date Jun 26, 2009
	 * @param time 日期参数
	 * @param add_day 累加天数
	 * @return 累加后的日期
	 */
	public static Date addDateByDay(Date time, int add_day) {

		if (time == null) {
			return new Date();
		}
		Calendar cal = Calendar.getInstance();
		cal.setTime(time);
		cal.add(Calendar.DAY_OF_YEAR, add_day);
		return cal.getTime();
	}

	/**
	 * 给日期累加指定周数并返回累加后的日期
	 * @author cui 
	 * @date Jun 26, 2009
	 * @param time 日期参数
	 * @param add_week 累加周数
	 * @return 累加后的日期
	 */
	public static Date addDateByWeek(Date time, int add_week) {

		if (time == null) {
			return new Date();
		}
		Calendar cal = Calendar.getInstance();
		cal.setTime(time);
		cal.add(Calendar.WEEK_OF_MONTH, add_week);
		return cal.getTime();
	}

	/**
	 * 给日期累加指定天数并返回累加后的日期
	 * @author cui
	 * @date Jun 26, 2009
	 * @param time 日期参数
	 * @param add_day 累加天数
	 * @return
	 */
	public static Date addDateByDay(Timestamp time, int add_day) {

		if (time == null) {
			return new Date();
		}
		Calendar cal = Calendar.getInstance();
		cal.setTime(time);
		cal.add(Calendar.DAY_OF_YEAR, add_day);
		return cal.getTime();
	}

	/**
	 * 给日期累加指定天数并返回累加并去掉时分秒后的日期
	 * @author cui
	 * @date Jun 26, 2009
	 * @param date 日期参数
	 * @param add_day 累回天数
	 * @return
	 */
	public static Date getRollDay(Date date, int add_day) {
		return getDay(addDateByDay(date, add_day));
	}

	/**
	 * 返回两个日期相差的秒数
	 * @author cui 
	 * @date Jun 26, 2009
	 * @param begin 
	 * @param end
	 * @return 相差的秒数
	 */
	public static long between(Date begin, Date end) {
		if (begin == null || end == null) {
			return 0;
		}
		return (end.getTime() - begin.getTime()) / 1000;
	}

	/**
	 * 给指定日期累加上指定的月数
	 * @author cui
	 * @date Jun 26, 2009
	 * @param time 日期参数
	 * @param add_month 累加月数
	 * @return 累加后的日期
	 */
	public static Date addDateByMonth(Date time, int add_month) {
		if (time == null) {
			return new Date();
		}
		Calendar cal = Calendar.getInstance();
		cal.setTime(time);
		cal.add(Calendar.MONTH, add_month);
		return cal.getTime();
	}

	/**
	 * 给指定日期累加上指定的小时数
	 * @author cui 
	 * @date Jun 26, 2009
	 * @param time 日期参数
	 * @param add_Hour 累加小时数
	 * @return 累加后的日期
	 */
	public static Date addHourByDay(Date time, int add_Hour) {

		if (time == null) {
			return new Date();
		}
		Calendar cal = Calendar.getInstance();
		cal.setTime(time);
		cal.add(Calendar.HOUR_OF_DAY, add_Hour);
		return cal.getTime();
	}

	/**
	 * 给指定日期累加上指定的分钟数
	 * @author cui
	 * @date Jun 26, 2009
	 * @param time 日期参数
	 * @param add_minute 分钟数
	 * @return 累加后的日期
	 */
	public static Date addHourByMinute(Date time, int add_minute) {
		if (time == null) {
			return new Date();
		}
		Calendar cal = Calendar.getInstance();
		cal.setTime(time);
		cal.add(Calendar.MINUTE, add_minute);
		return cal.getTime();
	}

	/**
	 * 给指定日期累加上指定的秒数
	 * @author cui 
	 * @date Jun 26, 2009
	 * @param time 日期参数
	 * @param add_second 秒数
	 * @return 累加后的日期
	 */
	public static Date addHourBySecond(Date time, int add_second) {
		if (time == null) {
			return new Date();
		}
		Calendar cal = Calendar.getInstance();
		cal.setTime(time);
		cal.add(Calendar.SECOND, add_second);
		return cal.getTime();
	}

	/**
	 * 获取本周一起始时间
	 * @author cui 
	 * @date Jun 26, 2009
	 * @return 周一起始时间
	 */
	public static Date getThisWeekFirstDay() {
		Calendar cl = Calendar.getInstance();
		cl.roll(Calendar.DAY_OF_YEAR, -cl.get(Calendar.DAY_OF_WEEK) + 2);
		String date = getFormatDate(cl.getTime(), "yyyy-MM-dd 00:00:00");
		return getDate(date, "yyyy-MM-dd HH:mm:ss");
	}
	
	/**
	 * 获取本周日结束时间
	 * @author cui
	 * @date Jun 26, 2009
	 * @return 周日结束时间
	 */
	public static Date getThisWeekLastDay() {
		Calendar cl = Calendar.getInstance();
		cl.roll(Calendar.DAY_OF_YEAR, -cl.get(Calendar.DAY_OF_WEEK) + 8);
		String date = getFormatDate(cl.getTime(), "yyyy-MM-dd 23:59:59:999");
		return getDate(date, "yyyy-MM-dd HH:mm:ss:SSS");
	}

	/**
	 * 获取上周一起始时间
	 * @author cui 
	 * @date Jun 26, 2009
	 * @return 上周一起始时间
	 */
	public static Date getPreviousWeekFirstDay() {
		Calendar cl = Calendar.getInstance();
		cl.roll(Calendar.DAY_OF_YEAR, -cl.get(Calendar.DAY_OF_WEEK) - 5);
		String date = getFormatDate(cl.getTime(), "yyyy-MM-dd 00:00:00");
		return getDate(date, "yyyy-MM-dd HH:mm:ss");
	}

	/**
	 * 获取上周日结束时间
	 * @author cui
	 * @date Jun 26, 2009
	 * @return 上周日结束时间
	 */
	public static Date getPreviousWeekLastDay() {
		Calendar cl = Calendar.getInstance();
		cl.roll(Calendar.DAY_OF_YEAR, -cl.get(Calendar.DAY_OF_WEEK) + 1);
		String date = getFormatDate(cl.getTime(), "yyyy-MM-dd 23:59:59:999");
		return getDate(date, "yyyy-MM-dd HH:mm:ss:SSS");
	}

	/**
	 * 获取本月第一天的起始时间
	 * @author cui 
	 * @date Jun 26, 2009
	 * @return 本月第一天的起始时间
	 */
	public static Date getThisMonthFirstDay() {
		Calendar cl = Calendar.getInstance();
		cl.set(Calendar.DAY_OF_MONTH, 1);
		String date = getFormatDate(cl.getTime(), "yyyy-MM-dd 00:00:00");
		return getDate(date, "yyyy-MM-dd HH:mm:ss");
	}

	/**
	 * 获取本月最后一天的起始时间
	 * @author cui 
	 * @date Jun 26, 2009
	 * @return 本月最后一天的起始时间
	 */
	public static Date getThisMonthLastDay() {
		Calendar cl = Calendar.getInstance();
		cl.add(Calendar.MONTH, 1);
		cl.set(Calendar.DATE, 0);
		String date = getFormatDate(cl.getTime(), "yyyy-MM-dd 23:59:59:999");
		return getDate(date, "yyyy-MM-dd HH:mm:ss:SSS");
	}

	/**
	 * 获取指定日期当月第一天的起始时间
	 * @author cui
	 * @date Jun 26, 2009
	 * @param now 日期参数
	 * @return 当月第一天的起始时间
	 */
	public static Date getMonthFirstDay(Date now) {
		Calendar cl = Calendar.getInstance();
		cl.setTime(now);
		cl.set(Calendar.DAY_OF_MONTH, 1);
		String date = getFormatDate(cl.getTime(), "yyyy-MM-dd 00:00:00");
		return getDate(date, "yyyy-MM-dd HH:mm:ss");
	}

	/**
	 * 获取指定日期当月最后一天的结束时间
	 * @author cui 
	 * @date Jun 26, 2009
	 * @param now 日期参数
	 * @return 当月最后一天的结束时间
	 */
	public static Date getMonthLastDay(Date now) {
		Calendar cl = Calendar.getInstance();
		cl.setTime(now);
		cl.add(Calendar.MONTH, 1);
		cl.set(Calendar.DATE, 0);
		String date = getFormatDate(cl.getTime(), "yyyy-MM-dd 23:59:59:999");
		return getDate(date, "yyyy-MM-dd HH:mm:ss:SSS");
	}

	/**
	 * 获取给定年月的最后一天
	 * @author cui 
	 * @date Jun 26, 2009
	 * @param year 年份
	 * @param month 月份
	 * @return 给定年月的最后一天
	 */
	public static int getMonthOfLastDay(int year, int month) {
		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.YEAR, year);
		calendar.set(Calendar.MONTH, month - 1);
		return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);

	}

	/**
	 * 获取给定年月的第一天
	 * @author cui 
	 * @date Jun 26, 2009
	 * @param year 年份
	 * @param month 月份
	 * @return 给定年月的第一天
	 */
	public static int getMonthOfFirstDay(int year, int month) {
		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.YEAR, year);
		calendar.set(Calendar.MONTH, month - 1);
		return calendar.getActualMinimum(Calendar.DAY_OF_MONTH);
	}
	
	/**
	 * 判断一个日期是否在两个日期之间
	 * @author 滕辉
	 * @param startDate 开始日期
	 * @param endDate 结束日期
	 * @param date 指定日期
	 * @return
	 */
	public static boolean between(Date startDate, Date endDate, Date date){
		if(startDate == null && endDate == null){
			return true;
		}else if(startDate != null && startDate.getTime() <= date.getTime() && endDate == null){
			return true;
		}else if(endDate != null && endDate.getTime() >= date.getTime() && startDate == null){
			return true;
		}else if(startDate != null && endDate != null && startDate.getTime() <= date.getTime() && endDate.getTime() >= date.getTime()){
			return true;
		}else{
			return false;
		}
	}
	/**
	 * 获得指定日期的前一天的数据
	 * @author caoxian 
	 * @param dateStr
	 * @return
	 */
	public static Date getBeforeToday(String dateStr) {
		Calendar calendar = Calendar.getInstance();
	    int day = calendar.get(Calendar.DAY_OF_YEAR);
	    calendar.set(Calendar.DAY_OF_YEAR, day - 1);
	    dateStr = getFormatDate(calendar.getTime(), "yyyy-MM-dd 23:59:59:999");
	    return getDate(dateStr, "yyyy-MM-dd HH:mm:ss");
	}
	/**
	 * 获得指定日期的前30天的数据
	 * @author caoxian 
	 * @param dateStr
	 * @return
	 */
	public static Date getBeforeThrityTody(String dateStr){
		Calendar calendar = Calendar.getInstance();
	    int day = calendar.get(Calendar.DAY_OF_YEAR);
	    calendar.set(Calendar.DAY_OF_YEAR, day - 30);
	    dateStr = getFormatDate(calendar.getTime(), "yyyy-MM-dd 00:00:00");
	    return getDate(dateStr, "yyyy-MM-dd HH:mm:ss");
	}
	

}

你可能感兴趣的:(oracle,sql,C++,c,C#)