日期与字符串之间的转换

import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

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


public class DateUtil implements Serializable {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private static Log log = LogFactory.getLog(DateUtil.class);
	
	/**
	 * 把字符串型日期中的‘/’转换成‘-’
	 * 
	 * @param date
	 *            String
	 * @return String
	 */
	public static String formatDateString(String date) {
		if (date == null || date.trim().equals(""))
			return date;
		return date.replaceAll("/", "-");
	}

	/**
	 * 字符型的日期转换成Date型的日期
	 * 
	 * @param myDateStr
	 *            String
	 * @return Date
	 */
	public static java.util.Date stringToDate(String myDateStr) {
		myDateStr = formatDateString(myDateStr);
		if (myDateStr.length() < 10) {
			return null;
		}
		String sFormat = "yyyy-MM-dd";
		java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(sFormat);
		java.util.Date d = null;
		try {
			d = sdf.parse(myDateStr);
		} catch (java.text.ParseException pe) {
			log.error("Parse data from string error!", pe);
		}
		return d;
	}

	/**
	 * 字符型的日期转换成Date型的日期
	 * 
	 * @param myDateStr
	 *            String
	 * @return Date
	 */
	public static java.util.Date stringToDate(String myDateStr, String format) {
		myDateStr = formatDateString(myDateStr);
		if (myDateStr.length() < 10) {
			return null;
		}
		if (format == null || format.trim().equals("")) {
			format = "yyyy-MM-dd";
		}
		java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(format);
		java.util.Date d = null;
		try {
			d = sdf.parse(myDateStr);
		} catch (java.text.ParseException pe) {
			log.error("Parse data from string error!", pe);
		}
		return d;
	}

	/**
	 * 字符型的日期转换成Date型的日期
	 * 
	 * @param myDateStr
	 *            String
	 * @return Date
	 */
	public static java.util.Date stringToDatetime(String myDateStr) {
		myDateStr = formatDateString(myDateStr);
		if (myDateStr.length() < 19) {
			// return null;
			myDateStr = myDateStr.substring(0, 10) + " 00:00:00";
		}
		myDateStr = myDateStr.substring(0, 19);
		String sFormat = "yyyy-MM-dd HH:mm:ss";
		java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(sFormat);
		java.util.Date d = null;
		try {
			d = sdf.parse(myDateStr);
		} catch (java.text.ParseException pe) {
			log.error("Parse date from string error!", pe);
		}
		return d;
	}

	/**
	 * 长整型的值转换成日期
	 * 
	 * @param dateVal
	 *            long 长整型的日期值
	 * @return Date
	 */
	public static java.util.Date longToDatetime(long dateVal) {
		return new Date(dateVal);
	}

	/**
	 * 长整型值转换日期值
	 * 
	 * @param dateVal
	 *            Long 待转换值
	 * @return Date
	 */
	public static Date longToDatetime(Long dateVal) {
		return longToDatetime(dateVal.longValue());
	}

	/**
	 * Date型的日期转换成字符型的日期
	 * 
	 * @param myDate
	 *            Date
	 * @return String
	 */
	public static String dateToString(java.util.Date myDate) {
		if (myDate == null) {
			return null;
		}
		java.text.SimpleDateFormat sf = new java.text.SimpleDateFormat("yyyy-MM-dd");
		return sf.format(myDate);
	}
	
	/**
	 * Date型的日期转换成字符型的日期
	 * 
	 * @param myDate
	 *            Date
	 * @return String
	 */
	public static String dateToChineseString(java.util.Date myDate) {
		if (myDate == null) {
			return null;
		}
		java.text.SimpleDateFormat sf = new java.text.SimpleDateFormat("yyyy年MM月dd日");
		return sf.format(myDate);
	}
	
	/**
	 * 根据日期和格式生成字符串
	 * @param myDate
	 * @param formatString
	 * @return
	 */
	public static String getTimeByFormat(java.util.Date myDate,String formatString){
	    if (myDate == null) {
            return null;
        }
	    java.text.SimpleDateFormat sf = new java.text.SimpleDateFormat(formatString);
	    return sf.format(myDate);
	}
	/**
	 * Date型的日期转换成字符型的日期
	 * 
	 * @param myDate
	 *            Date
	 * @return String
	 */
	public static String datetimeToString(java.util.Date myDate) {
		if (myDate == null) {
			return null;
		}
		// log.debug(myDate.toString());
		java.text.SimpleDateFormat sf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		return sf.format(myDate);
	}

	/**
	 * Date型的日期转换成字符型的日期(24小时制)
	 * 
	 * @param myDate
	 *            Date
	 * @return String
	 */
	public static String datetimeToString24(java.util.Date myDate) {
		if (myDate == null) {
			return null;
		}
		// log.debug(myDate.toString());
		java.text.SimpleDateFormat sf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		return sf.format(myDate);
	}

	/**
	 * Date型的日期转换成字符型的日期(12小时制)
	 * 
	 * @param myDate
	 *            Date
	 * @return String
	 */
	public  static String datetimeToString12(java.util.Date myDate) {
		if (myDate == null) {
			return null;
		}
		// log.debug(myDate.toString());
		java.text.SimpleDateFormat sf = new java.text.SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
		return sf.format(myDate);
	}

	/**
	 * Date型的日期转换成无分隔符的字符型的日期
	 * 
	 * @param myDate
	 *            Date
	 * @return String
	 */
	public static String dateToNoSplashString(java.util.Date myDate) {
		if (myDate == null) {
			return null;
		}
		java.text.SimpleDateFormat sf = new java.text.SimpleDateFormat("yyyyMMdd");
		return sf.format(myDate);
	}

	/**
	 * Date型的日期转换成无分隔符的字符型的日期
	 * 
	 * @param myDate
	 *            Date
	 * @return String
	 */
	public static String datetimeToNoSplashString(java.util.Date myDate) {
		if (myDate == null) {
			return null;
		}
		java.text.SimpleDateFormat sf = new java.text.SimpleDateFormat("yyyyMMddHHmmss");
		return sf.format(myDate);
	}

	public static String datetimeToNoSplashMSString(java.util.Date myDate) {
		if (myDate == null) {
			return null;
		}
		java.text.SimpleDateFormat sf = new java.text.SimpleDateFormat("yyyyMMddHHmmssSSS");
		return sf.format(myDate);
	}
	
	/**
	 * 得到指定日期增加指定天数后的日期
	 * 
	 * @param myDate
	 *            Date
	 * @param difDay
	 *            int
	 * @return Date
	 */
	public static java.util.Date addDay(java.util.Date myDate, int difDay) {
		GregorianCalendar cal = (GregorianCalendar) GregorianCalendar.getInstance();
		if (myDate == null) {
			return null;
		}
		cal.setTime(myDate);
		cal.add(Calendar.DATE, difDay);
		return cal.getTime();
	}

	/**
	 * 得到指定日期增加指定月数后的日期
	 * 
	 * @param myDate
	 *            Date
	 * @param difMonth
	 *            int
	 * @return Date
	 */
	public static java.util.Date addMonth(java.util.Date myDate, int difMonth) {
		Calendar cal = GregorianCalendar.getInstance();
		if (myDate == null) {
			return null;
		}
		cal.setTime(myDate);
		cal.add(Calendar.MONTH, difMonth);
		return cal.getTime();
	}

	/**
	 * 得到指定日期增加指定年数后的日期
	 * 
	 * @param myDate
	 *            Date
	 * @param difYear
	 *            int
	 * @return Date
	 */
	public static java.util.Date addYear(java.util.Date myDate, int difYear) {
		Calendar cal = GregorianCalendar.getInstance();
		if (myDate == null) {
			return null;
		}
		cal.setTime(myDate);
		cal.add(Calendar.YEAR, difYear);
		return cal.getTime();
	}

	/**
	 * 取得某一日期所在月份的天数
	 * 
	 * @param myDate
	 *            Date
	 * @return int
	 */
	public static int getDaysOfMonth(java.util.Date myDate) {
		int days;
		GregorianCalendar gcal = new java.util.GregorianCalendar();
		if (myDate == null) {
			return 0;
		}
		gcal.setTime(myDate);
		days = gcal.getActualMaximum(Calendar.DAY_OF_MONTH);
		return days;
	}

	/**
	 * 得到某一日期所在月份的第一天日期
	 * 
	 * @param myDate
	 *            Date
	 * @return Date
	 */
	public static Date getFirstDateOfMonth(java.util.Date myDate) {
		GregorianCalendar gcal = new java.util.GregorianCalendar();
		if (myDate == null) {
			return gcal.getTime();
		}
		gcal.setTime(myDate);
		gcal.set(gcal.get(Calendar.YEAR), gcal.get(Calendar.MONTH), 1);

		return gcal.getTime();
	}

	/**
	 * 得到某一日期所在月份的第一天日期
	 * 
	 * @param myDate
	 *            Date
	 * @return String
	 */
	public static String getFirstDayOfMonth(java.util.Date myDate) {
		GregorianCalendar gcal = new java.util.GregorianCalendar();
		if (myDate == null) {
			return "";
		}
		gcal.setTime(myDate);
		java.text.SimpleDateFormat sf = new java.text.SimpleDateFormat("yyyy-MM-");
		return (sf.format(gcal.getTime()) + "01");
	}

	/**
	 * 得到某一日期所在月份的最后一天日期
	 * 
	 * @param myDate
	 *            Date
	 * @return Date
	 */
	public static Date getEndDateOfMonth(java.util.Date myDate) {
		GregorianCalendar gcal = new java.util.GregorianCalendar();
		if (myDate == null) {
			return gcal.getTime();
		}
		gcal.setTime(myDate);
		int days = getDaysOfMonth(myDate);
		gcal.set(gcal.get(Calendar.YEAR), gcal.get(Calendar.MONTH), days);

		return gcal.getTime();
	}

	/**
	 * 得到某一日期所在月份的最后一天日期
	 * 
	 * @param myDate
	 *            Date
	 * @return String
	 */
	public static String getEndDayOfMonth(java.util.Date myDate) {
		GregorianCalendar gcal = new java.util.GregorianCalendar();
		if (myDate == null) {
			return "";
		}
		gcal.setTime(myDate);
		int days = getDaysOfMonth(myDate);
		java.text.SimpleDateFormat sf = new java.text.SimpleDateFormat("yyyy-MM-");
		return (sf.format(gcal.getTime()) + Integer.toString(days));
	}

	/**
	 * 得到某一日期所在年份的第一天日期
	 * 
	 * @param myDate
	 *            Date
	 * @return Date
	 */
	public static Date getFirstDateOfYear(java.util.Date myDate) {
		GregorianCalendar gcal = new java.util.GregorianCalendar();
		if (myDate == null) {
			return gcal.getTime();
		}
		gcal.setTime(myDate);
		gcal.set(gcal.get(Calendar.YEAR), 0, 1);
		return gcal.getTime();
	}

	/**
	 * 得到某一日期所在年份的第一天日期
	 * 
	 * @param myDate
	 *            Date
	 * @return String
	 */
	public static String getFirstDayOfYear(java.util.Date myDate) {
		GregorianCalendar gcal = new java.util.GregorianCalendar();
		if (myDate == null) {
			return "";
		}
		gcal.setTime(myDate);
		java.text.SimpleDateFormat sf = new java.text.SimpleDateFormat("yyyy-");
		return (sf.format(gcal.getTime()) + "01-01");
	}

	/**
	 * 得到某一日期所在年份的最后一天日期
	 * 
	 * @param myDate
	 *            Date
	 * @return Date
	 */
	public static Date getEndDateOfYear(java.util.Date myDate) {
		GregorianCalendar gcal = new java.util.GregorianCalendar();
		if (myDate == null) {
			return gcal.getTime();
		}
		gcal.setTime(myDate);
		// int days = this.getDaysOfMonth(myDate);
		gcal.set(gcal.get(Calendar.YEAR), 11, 31);
		return gcal.getTime();
	}

	/**
	 * 得到某一日期所在年份的最后一天日期
	 * 
	 * @param myDate
	 *            Date
	 * @return String
	 */
	public static String getEndDayOfYear(java.util.Date myDate) {
		GregorianCalendar gcal = new java.util.GregorianCalendar();
		if (myDate == null) {
			return "";
		}
		gcal.setTime(myDate);
		// int days = this.getDaysOfMonth(myDate);
		java.text.SimpleDateFormat sf = new java.text.SimpleDateFormat("yyyy-");
		return (sf.format(gcal.getTime()) + "12-31");
	}

	/**
	 * 得到今天的日期
	 * 
	 * @return Date
	 */
	public static java.util.Date getToday() {
		GregorianCalendar gcal = new java.util.GregorianCalendar();
		return gcal.getTime();
	}

	public static java.util.Date now() {
		return getToday();
	}

	/**
	 * 取当前日期时间
	 * 
	 * @return String
	 */
	public static String getCurTime() {
		return datetimeToString(getToday());
	}

	/**
	 * 取当前日期
	 * 
	 * @return String
	 */
	public static String getCurDate() {
		return dateToString(getToday());
	}
	
	/**
	 * 取得当前中文日期
	 * 
	 * @return String
	 */
	public static String getChineseCurDate() {
		return dateToChineseString(getToday());
	}

	/**
	 * 求两个日期间相差的天数
	 * 
	 * @param date1
	 *            Date
	 * @param date2
	 *            Date
	 * @return int
	 */
	public static int daysAfter(Date date1, Date date2) {
		long lndate1 = date1.getTime();
		long lndate2 = date2.getTime();
		int dif = (int) ((lndate1 - lndate2) / 1000 / 3600 / 24);
		return dif;
	}

	/**
	 * 取得两个日期间相差的月数
	 * 
	 * @param beginDate
	 *            Date
	 * @param endDate
	 *            Date
	 * @return int
	 */
	public static int monthsBetween(Date beginDate, Date endDate) {
		GregorianCalendar gcBegin = new GregorianCalendar();
		GregorianCalendar gcEnd = new GregorianCalendar();
		if (beginDate.compareTo(endDate) > 0) {
			Date d = beginDate;
			beginDate = endDate;
			endDate = d;
		}
		gcBegin.setTime(beginDate);
		gcEnd.setTime(endDate);
		return (gcEnd.get(GregorianCalendar.YEAR) - gcBegin.get(GregorianCalendar.YEAR)) * 12 + gcEnd.get(GregorianCalendar.MONTH)
				- gcBegin.get(GregorianCalendar.MONTH);
	}

	/**
	 * 计算从指定日期开始的后指定天数的日期
	 * 
	 * @param baseDate
	 *            Date 基准日期
	 * @param n
	 *            int 需要加上的日期,如果是负值,表示往前算
	 * @return Date
	 */
	public static Date relativeDate(Date baseDate, int n) {
		long ms = n * 24 * 60 * 60 * 1000L;
		return longToDatetime((long) (baseDate.getTime() + ms));
	}

	/**
	 * 计算从指定日期开始的后指定数值的秒
	 * 
	 * @param baseDate
	 *            Date 基准日期
	 * @param n
	 *            int 需要加上的日期,如果是负值,表示往前算
	 * @return Date
	 */
	public static Date relativeDate_M(Date baseDate, int n) {
		long ms = n * 1000L;
		return longToDatetime((long) (baseDate.getTime() + ms));
	}

	/**
	 * 取得指定日期的年份
	 * 
	 * @param date
	 *            Date
	 * @return int
	 */
	public static int getYear(Date date) {
		java.util.GregorianCalendar gcal = new java.util.GregorianCalendar();
		gcal.setTime(date);
		int year = gcal.get(Calendar.YEAR);
		return year;
	}

	/**
	 * 取得指定日期所在的季度
	 * 
	 * @param date
	 *            Date
	 * @return int
	 */
	public static int getQuarter(Date date) {
		java.util.GregorianCalendar gcal = new java.util.GregorianCalendar();
		gcal.setTime(date);
		int quarter = 0;
		// int month = gcal.get(Calendar.MONTH);
		quarter = (gcal.get(Calendar.MONTH) / 3) + 1;
		return quarter;
	}

	/**
	 * 取得指定日期的月份
	 * 
	 * @param date
	 *            Date
	 * @return int
	 */
	public static int getMonth(Date date) {
		java.util.GregorianCalendar gcal = new java.util.GregorianCalendar();
		gcal.setTime(date);
		int month = gcal.get(Calendar.MONTH) + 1;
		return month;
	}

	/**
	 * 取出指定日期的日(天)
	 * 
	 * @param date
	 *            Date
	 * @return int
	 */
	public static int getDay(Date date) {
		java.util.GregorianCalendar gcal = new java.util.GregorianCalendar();
		gcal.setTime(date);
		int day = gcal.get(Calendar.DATE);
		return day;
	}

	/**
	 * 取指定日期值中的小时数(12小时制)
	 * 
	 * @param date
	 *            Date
	 * @return int
	 */
	public static int getHour(Date date) {
		Calendar cl = Calendar.getInstance();
		cl.setTime(date);
		int hour = cl.get(Calendar.HOUR);
		return hour;
	}

	/**
	 * 取得24小时制的小时
	 * 
	 * @param date
	 *            Date
	 * @return int
	 */
	public static int getHourOfDay(Date date) {
		Calendar cl = Calendar.getInstance();
		cl.setTime(date);
		int hour = cl.get(Calendar.HOUR_OF_DAY);
		return hour;
	}

	/**
	 * 取得指定日期值中的分钟数
	 * 
	 * @param date
	 *            Date
	 * @return int
	 */
	public static int getMinute(Date date) {
		Calendar cl = Calendar.getInstance();
		cl.setTime(date);
		int minute = cl.get(Calendar.MINUTE);
		return minute;
	}

	/**
	 * 取得指定日期值中的秒数
	 * 
	 * @param date
	 *            Date
	 * @return int
	 */
	public static int getSecond(Date date) {
		Calendar cl = Calendar.getInstance();
		cl.setTime(date);
		int second = cl.get(Calendar.SECOND);
		return second;
	}

	/**
	 * 取得一个日期所对应的星期数
	 * 
	 * @param date
	 *            Date
	 * @return int
	 */
	public static int getDayOfWeek(Date date) {
		Calendar cl = Calendar.getInstance();
		cl.setTime(date);
		int weekDay = cl.get(Calendar.DAY_OF_WEEK);
		return weekDay;
	}

	/**
	 * 取得一个日期值日所在月份的第几个星期
	 * 
	 * @param date
	 *            Date
	 * @return int
	 */
	public static int getWeekOfMonth(Date date) {
		Calendar cl = Calendar.getInstance();
		cl.setTime(date);
		int weekDay = cl.get(Calendar.WEEK_OF_MONTH);
		return weekDay;
	}

	/**
	 * 取得指定日期所在季度的第一天
	 * 
	 * @param date
	 *            Date 指定日期
	 * @return Date
	 */
	public static Date getFirstDayOfQuarter(Date date) {
		java.util.GregorianCalendar gcal = new java.util.GregorianCalendar();
		gcal.setTime(date);
		int quarter = getQuarter(date);
		int month = gcal.get(Calendar.MONTH);
		switch (quarter) {
		case 1:
			month = 0;
			break;
		case 2:
			month = 3;
			break;
		case 3:
			month = 6;
			break;
		case 4:
			month = 9;
			break;
		}
		gcal.set(gcal.get(Calendar.YEAR), month, 1, gcal.get(Calendar.HOUR), gcal.get(Calendar.MINUTE), gcal.get(Calendar.SECOND));

		return gcal.getTime();
	}

	/**
	 * 取得指定日期所在季度的最后一天
	 * 
	 * @param date
	 *            Date 指定日期
	 * @return Date
	 */
	public static Date getEndDayOfQuarter(Date date) {
		java.util.GregorianCalendar gcal = new java.util.GregorianCalendar();
		gcal.setTime(date);
		int quarter = getQuarter(date);
		int month = gcal.get(Calendar.MONTH);
		switch (quarter) {
		case 1:
			month = 2;
			break;
		case 2:
			month = 5;
			break;
		case 3:
			month = 8;
			break;
		case 4:
			month = 11;
			break;
		}
		gcal.set(gcal.get(Calendar.YEAR), month, 1);

		return stringToDate(getEndDayOfMonth(gcal.getTime()));
	}

	/**
	 * 取得指定日期增加一个季度(3个月)的日期
	 * 
	 * @param date
	 *            Date 指定日期
	 * @return Date
	 */
	public static Date addQuarter(Date date, int difQuarter) {
		return addMonth(date, 3 * difQuarter);
	}

	/**
	 * 检测指定的字符型日期值是否符合指定的格式
	 * 
	 * @param dateStr
	 *            String 日期值
	 * @param format
	 *            String 格式串
	 * @return boolean 结果值
	 */
	public static boolean checkDateFormat(String dateStr, String format) {
		if (dateStr == null || "".equals(dateStr.trim())) {
			return true;
		}

		if (format == null || "".equals(format.trim())) {
			format = "yyyy-MM-dd";
		}
		if (format.length() != dateStr.length()) {
			log.error("The date string's length not equals format string's length.");
			return false;
		}
		java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(format);
		try {
			sdf.parse(dateStr);
			// log.debug("After parse date: " + d);
		} catch (java.text.ParseException pe) {
			log.error("", pe);
			return false;
		}
		return true;
	}

	/**
	 * 检测指定的字符型日期值是否符合指定的格式
	 * 
	 * @param dateStr
	 *            String 日期值
	 * @param format
	 *            String 格式串
	 * @return boolean 结果值
	 */
	public static boolean checkDateFormatAndValue(String dateStr, String format) {
		boolean ret = true;
		if (dateStr == null || "".equals(dateStr.trim())) {
			return true;
		}

		if (format == null || "".equals(format.trim())) {
			format = "yyyy-MM-dd";
		}
		if (format.length() != dateStr.length()) {
			log.error("The date string's length not equals format string's length.");
			return false;
		}
		String d_month = dateStr.substring(5, 7);
		java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat(format);
		Date d = null;
		try {
			d = sdf.parse(dateStr);
			int month = getMonth(d);
			if (Integer.parseInt(d_month) != month) {
				ret = false;
			}
		} catch (java.text.ParseException pe) {
			log.error("", pe);
			ret = false;
		}
		return ret;
	}

	/**
	 * 从一个日期值中取出星期值,按指定格式显示,如果格式字符串为null,则返回“星期X”
	 * 
	 * @param value
	 *            Date 日期值
	 * @param formatStr
	 *            String 格式字符串
	 * @return String
	 */
	public static String formatWeek(Date value, String formatStr) {
		if (value == null) {
			return null;
		}

		if (formatStr == null || "".equals(formatStr.trim())) {
			formatStr = "星期F";
		}
		java.text.SimpleDateFormat sf = new java.text.SimpleDateFormat(formatStr);
		return sf.format(value);
	}

	/**
	 * 得到两个日期之间间隔数
	 * 
	 * @param dateBefore
	 *            Date 开始日期
	 * @param dateAfter
	 *            Date 结束日期
	 * @param field
	 *            int 要计算的时间类型,例如: 天,月,年(eg. Calendar.Month Calendar.Year)
	 * @param amount
	 *            int 间隔数
	 * @return int 例:
	 *         getDateInterval(dateBefore,dateAfter,Calendar.Month,1),返回两个日期之间的月份。
	 */
	public static int getDateInterval(Date dateBefore, Date dateAfter, int field, int amount) {
		int interval = 0;
		Calendar cb = new GregorianCalendar();
		Calendar da = new GregorianCalendar();
		cb.setTime(dateBefore);
		da.setTime(dateAfter);
		da.add(field, 1);
		for (Calendar c = cb; c.before(da); c.add(field, amount)) {
			interval++;
		}
		return interval;
	}

	/**
	 * 得到两个日期之前的天数
	 * 
	 * @param beginDate
	 *            String 开始日期 格式:yyyy-MM-dd
	 * @param endDate
	 *            String 结束日期 格式:yyyy-MM-dd
	 * @return int
	 */
	public static int getDateInterval(String beginDate, String endDate) {
		try {
			return getDateInterval(stringToDate(beginDate), stringToDate(endDate), Calendar.DATE, 1);
		} catch (Exception ex) {
			return 0;
		}
	}

	/**
	 * 两个日期的间隔月份
	 * 
	 * @param dateBefore
	 * @param dateAfter
	 * @return
	 */
	public static int getMonthInterval(Date dateBefore, Date dateAfter) {
		return getDateInterval(dateBefore, dateAfter, Calendar.MONTH, 1);
	}

	/**
	 * 根据传入的样式格式化日期
	 * 
	 * @param date
	 *            Date
	 * @param pattern
	 *            String
	 * @return String
	 */
	public static String format(Date date, String pattern) {
		SimpleDateFormat formatter = new SimpleDateFormat(pattern);
		return formatter.format(date);
	}

	/**
	 * 比较两个字符串大小
	 * 
	 * @param str1
	 *            String
	 * @param str2
	 *            String
	 * @return int 0 相等; 1 前大于后; 2 后大于前; 3 出错
	 */
	public static int compare2StrDate(String str1, String str2) {
		int compareResult = 0;
		if (str1 == null || str2 == null) {
			return 3;
		}
		if (str1.length() != 10 || str2.length() != 10) {
			return 3;
		}
		char[] char_str1 = str1.toCharArray();
		char[] char_str2 = str2.toCharArray();
		for (int i = 0; i < 10; i++) {
			char tmpChar1 = char_str1[i];
			char tmpChar2 = char_str2[i];
			if (tmpChar1 > tmpChar2) {
				return 1;
			} else if (tmpChar1 < tmpChar2) {
				return 2;
			}
		}
		return compareResult;
	}

	public static void main(String[] args) {
		DateUtil date = new DateUtil();
		Date d = new Date();

		System.out.println("dateToString:" + date.dateToString(d));
		System.out.println("datetimeToString:" + date.datetimeToString(d));
		System.out.println("stringToDate:" + date.stringToDate(date.dateToString(d)));
		System.out.println("stringToDatetime:" + date.stringToDatetime(date.datetimeToString(d)));
		System.out.println("dateToNoSlashString:" + date.dateToNoSplashString(d));
		System.out.println("datetimeToNoSlashString:" + date.datetimeToNoSplashString(d));
		System.out.println("addDay:" + date.addDay(d, 1));
		System.out.println("addMonth:" + date.addMonth(d, 1));
		System.out.println("addYear:" + date.addYear(d, 1));
		System.out.println("getDaysOfMonth:" + date.getDaysOfMonth(d));
		System.out.println("getFirstDayOfMonth:" + date.getFirstDayOfMonth(d));
		System.out.println("getEndDayOfMonth:" + date.getEndDayOfMonth(d));
		System.out.println("getToday:" + date.getToday());
		System.out.println("daysAfter(Date date1, Date date2):" + date.daysAfter(d, date.addDay(d, 4)));
		System.out.println("getFirstDayOfYear:" + date.getFirstDayOfYear(d));
		System.out.println("getEndDayOfYear:" + date.getEndDayOfYear(d));
		System.out.println("checkDateFormat(\"20150801\",\"yyyy-MM-dd\"): " + checkDateFormat("20150801", "yyyy-MM-dd"));
		System.out.println("checkDateFormat(\"2015-8-01\",\"yyyy-MM-dd\"): " + checkDateFormat("2015-8-01", "yyyy-MM-dd"));
		System.out.println("checkDateFormat(\"2015-8-01\",\"yyyy-M-dd\"): " + checkDateFormat("2015-8-01", "yyyy-MM-dd"));
		System.out.println("checkDateFormat(\"2015-08-01\",\"yyyy-M-dd\"): " + checkDateFormat("2015-08-01", "yyyy-M-dd"));
		System.out.println("checkDateFormat(\"2015-08-01\",\"yyyyMMdd\"): " + checkDateFormat("2015-08-01", "yyyyMMdd"));
		System.out.println("checkDateFormat(\"2015-08-01\",\"yyyy-M-dd HH:mm:ss\"): "
				+ checkDateFormat("2015-8-01", "yyyy-MM-dd HH:mm:ss"));
		System.out.println("checkDateFormat(\"2015-08-01\",\"yyyy-MM-dd\"): " + checkDateFormat("2015-08-01", "yyyy-MM-dd"));

		Date today = date.getToday();
		System.out.println(date.stringToDatetime("2015-12-01 12:00:00").getTime());
		System.out.println("today - 1000: " + date.datetimeToString(date.relativeDate(today, -1000)));
		System.out.println("today - 100: " + date.datetimeToString(date.relativeDate(today, -100)));
		System.out.println("today - 10: " + date.datetimeToString(date.relativeDate(today, -10)));
		System.out.println("today - 2: " + date.datetimeToString(date.relativeDate(today, -2)));
		System.out.println("today - 0: " + date.datetimeToString(date.relativeDate(today, 0)));
		System.out.println("today + 10: " + date.datetimeToString(date.relativeDate(today, 10)));
		System.out.println("today 100: " + date.datetimeToString(date.relativeDate(today, 100)));
		System.out.println("today 1000: " + date.datetimeToString(date.relativeDate(today, 1000)));
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丵鹰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值