日期工具类

废话不说直接上代码:

package cn.java.sys.common.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

/**
 * @author java
 * @description 日期工具类
 */
public abstract class DateUtil {

	private static Calendar calendar = Calendar.getInstance();

	private static SimpleDateFormat simpleDateFormat = (SimpleDateFormat) SimpleDateFormat
			.getInstance();

	public static int GetWeekofYear() {
		int weeknum = 0;
		Calendar c = Calendar.getInstance();
		c.setTime(new Date());
		weeknum = c.get(Calendar.WEEK_OF_YEAR);
		return weeknum;
	}

	/**
	 * @description 解析日期 字符串
	 * @param date
	 *            日期字符串
	 * @param type
	 *            日期类型
	 * @return Date
	 */

	public static Date parse(String date, DateFormatType type) {
		simpleDateFormat.applyPattern(type.getValue());
		try {
			return simpleDateFormat.parse(date);
		} catch (ParseException e) {
			return null;
		}
	}

	/**
	 * @description 格式化日期字符串(默认类型 yyyy-MM-dd HH:mm:ss)
	 * @param date
	 *            日期
	 * @return String
	 */
	public static final String format(Date date) {
		if (date == null) {
			return "";
		}
		simpleDateFormat.applyPattern(DateFormatType.DEFAULT_TYPE.getValue());
		return simpleDateFormat.format(date);

	}

	/**
	 * @description 通过格式化类型格式化日期
	 * @param date
	 *            日期
	 * @param type
	 *            格式化类型
	 * @return String
	 */

	public static String format(Date date, DateFormatType type) {
		try {
			simpleDateFormat.applyPattern(type.getValue());
			return simpleDateFormat.format(date);

		} catch (Exception e) {
		}
		return null;
	}

	/**
	 * @description 传入timeStamp格式化日期字符串
	 * @param longDate
	 *            timeStamp
	 * @param type
	 *            日期格式化类型
	 * @return String
	 */

	public static String format(long longDate, DateFormatType type) {
		return format(new Date(longDate), type);
	}

	/**
	 * @description 将当前日期字符处格式化
	 * @param type
	 *            日期格式化类型
	 * @return String
	 */

	public static String format(DateFormatType type) {
		return format(new Date(), type);
	}

	/**
	 * 得到时间格式例如 2002-03-15
	 */
	public static final String format(long dateLong) {
		return format(new Date(dateLong));
	}

	/**
	 * 得到日期时间格式例如 2002-03-15 02:32:25
	 */
	public static final String formatTime(java.util.Date date) {
		return (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(date);
	}

	public static final String formatTime(long lngDate) {
		if (0 >= lngDate) {
			return "";
		} else {
			return formatTime(new Date(lngDate));
		}
	}

	public static final String formatTime(Long lngObj) {
		return formatTime(lngObj.longValue());
	}

	/**
	 * 得到小时,分的格式例如 02:32
	 */
	public static final String getFormatTime(java.util.Date date) {
		String Tempstr;
		int i;
		SimpleDateFormat mydate = new SimpleDateFormat(" MMM dd H mm ss,yyyy");
		Tempstr = "";

		mydate.applyPattern("H");
		i = Integer.parseInt(mydate.format(date));
		if (i < 10) {
			Tempstr = Tempstr + "0" + String.valueOf(i) + ":";
		} else {
			Tempstr = Tempstr + String.valueOf(i) + ":";
		}

		mydate.applyPattern("mm");
		i = Integer.parseInt(mydate.format(date));
		if (i < 10) {
			Tempstr = Tempstr + "0" + String.valueOf(i);
		} else {
			Tempstr = Tempstr + String.valueOf(i);
		}

		return Tempstr;
	}

	/**
	 * 得到小时的格式例如 02
	 */
	public static final String getFormatHour(java.util.Date date) {
		String Tempstr;
		int i;
		SimpleDateFormat mydate = new SimpleDateFormat(" MMM dd H mm ss,yyyy");
		Tempstr = "";

		mydate.applyPattern("H");
		i = Integer.parseInt(mydate.format(date));
		Tempstr = Tempstr + String.valueOf(i);
		return Tempstr;
	}

	/**
	 * 
	 * 得到小时的格式例如 02
	 */
	public static final String getFormatMinute(Date date) {

		String Tempstr;
		int i;
		SimpleDateFormat mydate = new SimpleDateFormat(" MMM dd H mm ss,yyyy");
		Tempstr = "";

		mydate.applyPattern("mm");
		i = Integer.parseInt(mydate.format(date));
		Tempstr = Tempstr + String.valueOf(i);
		return Tempstr;
	}

	/**
	 * 根据日期得到年份字符串
	 */
	public static final String getYear(Date date) {
		String Tempstr;
		int i;
		SimpleDateFormat mydate = new SimpleDateFormat(" MMM dd H mm ss,yyyy");
		Tempstr = "";
		mydate.applyPattern("yyyy");
		i = Integer.parseInt(mydate.format(date));
		Tempstr = Tempstr + String.valueOf(i);
		return Tempstr;
	}

	/**
	 * 根据日期得到月份字符串
	 */
	public static final String getMonth(Date date) {
		String Tempstr;
		int i;
		SimpleDateFormat mydate = new SimpleDateFormat(" MM dd H mm ss,yyyy");
		Tempstr = "";
		mydate.applyPattern("MM");
		i = Integer.parseInt(mydate.format(date));
		Tempstr = Tempstr + String.valueOf(i);
		return Tempstr;
	}

	/**
	 * 根据日期得到日期字符串
	 */
	public static final String getDay(Date date) {
		String Tempstr;
		int i;
		SimpleDateFormat mydate = new SimpleDateFormat(" MM dd H mm ss,yyyy");
		Tempstr = "";
		mydate.applyPattern("dd");
		i = Integer.parseInt(mydate.format(date));
		Tempstr = Tempstr + String.valueOf(i);
		return Tempstr;
	}

	/**
	 * 根据日期得到小时字符串
	 */
	public static final String getHour(Date date) {
		String Tempstr;
		int i;
		SimpleDateFormat mydate = new SimpleDateFormat(" MM dd H mm ss,yyyy");
		Tempstr = "";
		mydate.applyPattern("H");
		i = Integer.parseInt(mydate.format(date));
		Tempstr = Tempstr + String.valueOf(i);
		return Tempstr;
	}

	/**
	 * 用于只输入年月日生成long型的时间格式
	 **/
	public static final long getTimeLong(int yy, int mm, int dd) {
		calendar.clear();
		calendar.set(yy, mm - 1, dd, 0, 0, 0);
		return calendar.getTimeInMillis();

	}

	/**
	 * 用于输入年月日小时分生成long型的时间格式
	 **/
	public static final long getTimeLong(int yy, int mm, int dd, int h, int m) {
		calendar.clear();
		calendar.set(yy, mm - 1, dd, h, m, 0);
		return calendar.getTimeInMillis();
	}

	/**
	 * 用于只输入年,月生成long型的时间格式
	 **/
	public static final long getTimeLong(int yy, int mm) {
		calendar.clear();
		calendar.set(yy, mm - 1, 0, 0, 0, 0);
		return calendar.getTimeInMillis();
	}

	/**
	 * 根据输入的初始日期和新增的月份到新增月份后的总时间
	 **/
	public static final long getTotalTime(Date startTime, long month) {
		calendar.setTime(startTime);
		calendar.add(Calendar.MONTH, (int) month);
		return calendar.getTimeInMillis();
	}

	/**
	 * 用于输入年月日小时分秒生成long型的时间格式
	 **/
	public static final long getTimeLong(int yy, int mm, int dd, int h, int m,
			int sec) {
		calendar.clear();
		calendar.set(yy, mm - 1, dd, h, m, sec);
		return calendar.getTimeInMillis();
	}

	/**
	 * 根据输入一个时间得到和现在的时间差
	 **/
	public static final String getLeaveTime(long tagTime) {
		long nowTime = System.currentTimeMillis();
		long leaveTime = 0;
		if (nowTime > tagTime)
			leaveTime = (nowTime - tagTime) / 1000;
		else
			leaveTime = (tagTime - nowTime) / 1000;
		long date = 0;
		long hour = 0;
		long minute = 0;
		// int second = 0;

		long dateTime = 0;
		long hourTime = 0;
		// long minuteTime = 0;

		String strDate = "";
		String strHour = "";
		String strMinute = "";
		// String strSecond = "";

		date = leaveTime / 86400;
		dateTime = date * 86400;
		hour = (leaveTime - dateTime) / 3600;
		hourTime = hour * 3600;
		minute = (leaveTime - dateTime - hourTime) / 60;
		// minuteTime = minute*60;

		// second = leaveTime - dateTime - hourTime-minuteTime;

		if (date > 0)
			strDate = date + "天";
		if (hour > 0 || (minute > 0 && date > 0))
			strHour = hour + "小时";
		if (minute > 0)
			strMinute = minute + "分";
		// if(second>0)
		// strSecond = second+"秒";

		return strDate + strHour + strMinute;
	}

	/**
	 * @author 
	 * @param start
	 * @param end
	 * @return
	 * @throws Exception
	 */
	public static int getDiffMonth(String start, String end) throws Exception {
		SimpleDateFormat format = new SimpleDateFormat("yyyyMM");
		Date startDate = format.parse(start);
		Date endDate = format.parse(end);
		Calendar s = Calendar.getInstance();
		Calendar e = Calendar.getInstance();
		s.setTime(startDate);
		e.setTime(endDate);
		int diff = s.get(Calendar.MONTH) - e.get(Calendar.MONTH);
		return diff;
	}

	/**
	 * @author 
	 * @param sDate
	 * @param amount
	 * @return
	 * @throws Exception
	 */
	public static String addMonth(String sDate, int amount) throws Exception {
		SimpleDateFormat format = new SimpleDateFormat("yyyyMM");
		Date date = format.parse(sDate);
		Calendar c = Calendar.getInstance();
		c.setTime(date);
		c.add(Calendar.MONTH, amount);
		Date aDate = c.getTime();
		return format.format(aDate);
	}

	/**
	 * @author 
	 * @param sDate
	 * @param value
	 * @return
	 * @throws Exception
	 */
	public static String getBeforeYearAndMonth(String sDate, int value)
			throws Exception {
		SimpleDateFormat format = new SimpleDateFormat("yyyyMM");
		Date date = format.parse(sDate);
		Calendar c = Calendar.getInstance();
		c.setTime(date);
		c.add(Calendar.YEAR, value);
		return format.format(c.getTime());
	}

	/**
	 * 
	 * @param date
	 * @return 获取yyyy-MM-dd类型的日期字符串
	 */
	public static String getSimpleDate(java.util.Date date) {
		simpleDateFormat.applyPattern(DateFormatType.SIMPLE_TYPE.getValue());
		if (date != null) {
			return simpleDateFormat.format(date);
		} else {
			return "";
		}

	}

	/**
	 * 
	 * @param date
	 * @return 获取HH:mm:ss格式时间字符串
	 */
	public static String getFullTimeStr(java.util.Date date) {
		simpleDateFormat.applyPattern(DateFormatType.FUll_TIME_TYPE.value);
		if (null != date) {
			return simpleDateFormat.format(date);
		} else {
			return "";
		}

	}

	/**
	 * 
	 * @param 字符串时间
	 * @return HH:mm:ss格式时间字符串
	 * @throws ParseException
	 */
	public static String getFullTimeStr(String time) {
		String t = "";
		SimpleDateFormat format = new SimpleDateFormat("HHmmss");
		if (null != time && !"".equals(time)) {
			try {
				Date date = format.parse(time);
				t = getFullTimeStr(date);
			} catch (Exception e) {
				System.out.println("日期转换错误");
			}
		}
		return t;
	}

	/**
	 * 
	 * @param date
	 *            yyyyMM格式的日期
	 * @return yyyyMMdd格式的每月最后一天
	 * @throws ParseException
	 */
	public static String getMaxDayOfMonth(String date) {
		SimpleDateFormat format = new SimpleDateFormat("yyyyMM");
		try {
			Date d = format.parse(date);
			Calendar ca = Calendar.getInstance();
			ca.setTime(d);
			int m = ca.getActualMaximum(Calendar.DATE);
			return date + m;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return "";
	}

	public static void main(String[] args) throws Exception {
		// int d = getDiffMonth("201206", "201206");
		// System.out.println(getBeforeYearAndMonth("201205", -1));
		// System.out.println(addMonth("201205", d));
		// Date da = new Date();
		// System.out.println(getSimpleDate(da) + " " + getFullTimeStr(da));
		// System.out.println(getMaxDayOfMonth("201208"));
		System.out.println(getFullTimeStr("162829"));
	}

	/**
	 * @description 日期格式化类型枚举
	 */
	public enum DateFormatType {
		/**
		 * 格式为:yyyy-MM-dd HH:mm:ss
		 */
		DEFAULT_TYPE("yyyy-MM-dd HH:mm:ss"),

		/**
		 * 格式为:yyyy-MM-dd HH:mm:ss.SSS
		 */
		FULLALL_TYPE("yyyy-MM-dd HH:mm:ss.SSS"),

		/**
		 * 格式为:yyyy-MM-dd
		 */
		SIMPLE_TYPE("yyyy-MM-dd"),

		/**
		 * 格式为:yyyyMM
		 */
		YEAR_MONTH_TYPE("yyyyMM"),

		/**
		 * 格式为:yyyy年MM月
		 */
		YEARMONTH_TYPE("yyyy年MM月"),

		/**
		 * 格式为:yyyyMMdd
		 */
		SIMPLE_NOLINE_TYPE("yyyyMMdd"),

		/**
		 * 格式为:yyyyMMddHHmmss
		 */
		FULL_TYPE("yyyyMMddHHmmss"),

		/**
		 * 格式为:HHmmss
		 */
		SIMPLE_NOLINE_TIME_TYPE("HHmmss"),

		/**
		 * 格式为:yyyy/MM/dd
		 */
		SIMPLE_VIRGULE_TYPE("yyyy/MM/dd"),

		/**
		 * 格式为:yyyy/MM/dd
		 */
		FULL_VIRGULE_TYPE("yyyy/MM/dd HH:mm:ss"),

		/**
		 * 格式为:yyyy年MM月dd日
		 */

		SIMPLE_CN_TYPE("yyyy年MM月dd日"),

		/**
		 * 格式为:yyyy年M月d日
		 */

		SIM_CN_TYPE("yyyy年M月d日"),

		/**
		 * 格式为:M月d日
		 */

		SI_CN_TYPE("M月d日"),

		/**
		 * 格式为:yyyy年MM月dd日 HH时mm分ss秒
		 */

		FULL_CN_TYPE("yyyy年MM月dd日 HH时mm分ss秒"),

		/**
		 * 格式为:HH:mm:ss
		 */
		FUll_TIME_TYPE("HH:mm:ss"),

		/**
		 * 格式为:HH:mm
		 */
		HOUR_MINUTE_TIME_TYPE("HH:mm");

		private final String value;

		DateFormatType(String formatStr) {
			this.value = formatStr;
		}

		/**
		 * 
		 * @description 获取指定日期类型
		 * @return
		 */
		public String getValue() {
			return value;
		}
	}

	/**
	 * @description 获取所有的日期格式化类型
	 * @return String[]
	 */
	public static String[] getAllFormatTypes() {
		DateFormatType[] types = DateFormatType.values();
		List<String> values = new ArrayList<String>();
		for (DateFormatType type : types) {
			values.add(type.getValue());
		}
		return values.toArray(new String[values.size()]);
	}

	/***
	 * 得到传入的两个时间之间相隔的天数
	 * 
	 * @param startday
	 * @param endday
	 * @return
	 */
	public static int getIntervalDays(Date startday, Date endday) {
		if (startday.after(endday)) {
			Date cal = startday;
			startday = endday;
			endday = cal;
		}
		long sl = startday.getTime();
		long el = endday.getTime();
		long ei = el - sl;
		return (int) (ei / (1000 * 60 * 60 * 24));
	}

	public static int getIntervalMonths(Date startday, Date endday) {
		Calendar sdate = Calendar.getInstance();
		sdate.setTime(startday);

		Calendar edate = Calendar.getInstance();
		edate.setTime(endday);

		int diff = (edate.get(Calendar.YEAR) - sdate.get(Calendar.YEAR)) * 12
				+ edate.get(Calendar.MONTH) - sdate.get(Calendar.MONTH);
		return diff;
	}

	public static Date getBeforeDayDate(String date, int day) {
		Calendar c = Calendar.getInstance();
		c.setTime(DateUtil.parse(date, DateFormatType.SIMPLE_NOLINE_TYPE));
		c.add(Calendar.DAY_OF_MONTH, day);
		return c.getTime();
	}

	public static Object format(Object value, DateFormatType dateFormatType) {
		if (value instanceof String) {
			String s = (String) value;
			return DateUtil.format(DateUtil.parse(s, dateFormatType),
					dateFormatType);
		}
		if (value instanceof Date) {
			Date s = (Date) value;
			return DateUtil.format(s, dateFormatType);
		}
		return value;
	}

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值