张晨的个人博客

Java处理Date时间格式的各种场景工具类(一)

张晨的个人博客2014-05-29Java技术 2506 0A+A-

public class DateUtil {
	public enum DateType {
		YEAR, MONTH, DAY, HH, MI, SS, YYYY_MM_DD, YYYYMMDD
	}

	public static java.sql.Date maxDate() {
		return java.sql.Date.valueOf("9999-09-09");
	}

	/**
	 * 得到当前应用服务器的系统日期
	 * 
	 * @return 系统日期
	 */
	public static Timestamp sysTimestamp() {
		return new Timestamp(System.currentTimeMillis());
	}

	/**
	 * 得到当前应用服务器的系统日期
	 * 
	 * @return 系统日期
	 */
	public static java.sql.Date sysDate() {
		return new java.sql.Date(System.currentTimeMillis());
	}

	/**
	 * 得到当前应用服务器的系统时间
	 * 
	 * @return 系统日期
	 */
	public static java.sql.Time sysTime() {
		return new java.sql.Time(System.currentTimeMillis());
	}

	/**
	 * 得到当前应用服务器的系统日期<br>
	 * 字符串类型
	 * 
	 * @return 系统日期
	 */
	public static String sysDate4Str() {
		return new java.sql.Date(System.currentTimeMillis()).toString();
	}

	/**
	 * 得到d1与d2之间相差数值
	 * <p>
	 * 数值可以为年份,DateType.YEAR<br>
	 * 数值可以为月份,DateType.MONTH<br>
	 * 数值可以为天数,DateType.DAY<br>
	 * 数值可以为小时,DateType.HH<br>
	 * 数值可以为分钟,DateType.MI<br>
	 * 数值可以为秒,DateType.SS
	 * 
	 * @param d1
	 *            日期1(较大的日期)
	 * @param d2
	 *            日期2(较小的日期)
	 * @param dataType
	 *            数值类型
	 * @return 相差数值 <br>
	 *         d1早于d2时,返回-1。<br>
	 *         dateType类型不正确时,返回-2。
	 */
public static int dateBetween(Date d1, Date d2, DateType dateType) {
	if(d1.equals(d2)){
		return 0;
	}
	if (!d2.before(d1)) {
		return -1;
	}
	Calendar c1 = Calendar.getInstance();
	c1.setTime(d1);
	Calendar c2 = Calendar.getInstance();
	c2.setTime(d2);

	if (DateType.YEAR.equals(dateType)) {
		return c1.get(Calendar.YEAR) - c2.get(Calendar.YEAR);
	}
	if (DateType.MONTH.equals(dateType)) {
	return (c1.get(Calendar.YEAR) 
		- c2.get(Calendar.YEAR)) * 12 + c1.get(Calendar.MONTH) - c2.get(Calendar.MONTH);
	}
	if (DateType.DAY.equals(dateType)) {
		return (int) ((c1.getTimeInMillis() - c2.getTimeInMillis()) / 86400000L);
	}
	if (DateType.HH.equals(dateType)) {
		return (int) ((c1.getTimeInMillis() - c2.getTimeInMillis()) / 3600000L);
	}
	if (DateType.MI.equals(dateType)) {
		return (int) ((c1.getTimeInMillis() - c2.getTimeInMillis()) / 60000L);
	}
	if (DateType.SS.equals(dateType)) {
		return (int) ((c1.getTimeInMillis() - c2.getTimeInMillis()) / 1000L);
	}
	return -2;
}

	
}

 

文章关键词
Java
Date
Java处理时间格式
发表评论