我是靠谱客的博主 聪明鱼,最近开发中收集的这篇文章主要介绍Date处理工具类,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

import org.apache.log4j.Logger;

public class DateUtils {
	final static Logger logger = Logger.getLogger(DateUtils.class);

	private final static String[] months = { "Jan", "Feb", "Mar", "Apr", "May",
			"Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", };

	public final static Date parseComplicateDate(String str) {
		try {
			if (StringUtils.isNullOrEmpty(str))
				return null;
			String[] strs = str.split(" ");
			int nYear = Integer.parseInt(strs[5]);
			int nMonth = 0;
			for (int i = 0; i < months.length; i++) {
				if (months[i].equals(strs[1])) {
					nMonth = i;
					break;
				}
			}
			int nDay = Integer.parseInt(strs[2]);
			String strTime = strs[3];
			String[] strTimes = strTime.split(":");
			int nHour = Integer.parseInt(strTimes[0]);
			int nMinute = Integer.parseInt(strTimes[1]);
			int nSecond = Integer.parseInt(strTimes[2]);
			Calendar cal = new GregorianCalendar(nYear, nMonth, nDay, nHour,
					nMinute, nSecond);
			Date aDate = cal.getTime();
			return aDate;
		} catch (ArrayIndexOutOfBoundsException e) {
			logger.warn("", e);
			return null;
		} catch (NumberFormatException e) {
			logger.warn("", e);
			return null;
		} catch (Exception e) {
			logger.warn("", e);
			return null;
		}
	}

	/**
	 * 返回用户指定日期的前或后n天的字符串 正数为向后n天,负数相反  
	 * 
	 * @param date
	 * @param day
	 * @return
	 * @throws ParseException
	 */
	public static String getNumToDate(String date, int day)
			throws ParseException {

		Calendar c = Calendar.getInstance();

		SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
		c.setTime(sdf1.parse(date));
		c.add(Calendar.DAY_OF_MONTH, day);

		return sdf1.format(c.getTime());
	}

	public final static Date getYyyyMmDdHhMmss(String str) {
		if (StringUtils.isNullOrEmpty(str))
			return null;
		try {
			String[] strs = str.split(" ");
			String[] strDays = strs[0].split("-");
			int nYear = Integer.parseInt(strDays[0]);
			int nMonth = Integer.parseInt(strDays[1]);
			int nDay = Integer.parseInt(strDays[2]);

			String[] strTimes = strs[1].split(":");
			int nHour = Integer.parseInt(strTimes[0]);
			int nMinute = Integer.parseInt(strTimes[1]);
			int nSecond = Integer.parseInt(strTimes[2]);
			Calendar cal = new GregorianCalendar(nYear, nMonth - 1, nDay,
					nHour, nMinute, nSecond);
			return cal.getTime();
		} catch (ArrayIndexOutOfBoundsException e) {
			logger.warn("", e);
			return null;
		} catch (NumberFormatException e) {
			logger.warn("", e);
			return null;
		} catch (Exception e) {
			logger.warn("", e);
			return null;

		}
	}

	/**
	 * 返回与指定日期n个月的日期  
	 * 
	 * @param date
	 * @param day
	 * @return
	 * @throws ParseException
	 */
	public static Date getMonthToDate(Date date, int month)
			throws ParseException {
		Calendar c = Calendar.getInstance();
		c.setTime(date);
		c.add(Calendar.DAY_OF_MONTH, -month * 30);
		return c.getTime();
	}

	/**
	 * 返回用户指定日期的前或后n天的字符串 正数为向后n天,负数相反  
	 * 
	 * @param date
	 * @param day
	 * @return
	 * @throws ParseException
	 */
	public static Date getNumToDate(Date date, int day) throws ParseException {
		Calendar c = Calendar.getInstance();
		c.add(Calendar.DAY_OF_MONTH, day);
		return c.getTime();
	}

	/**
	 * 比较两个日期  
	 * 
	 * @param date1
	 * @param date2
	 * @return
	 */
	public static boolean compareDate(Date date1, Date date2) {
		Calendar c = Calendar.getInstance();
		c.setTime(date1);
		c.add(Calendar.DAY_OF_MONTH, 1);
		return c.getTime().getTime() > date2.getTime() ? true : false;
	}

	public static void main(String[] args) throws ParseException {
		SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");

		System.out.println(autoCommit());
		System.out.println(toHHmm(new Date()));
		System.out.println(toYyyymmddHhmmss(new Date()));
		System.out.println(toYyyyMmddHHmm(new Date()));
		System.out.println(toHyphenatedYyyyMmDdHhMmSsFlexible(new Date()));
		System.out.println(toHyphenatedYyyyMmDdHhMm(new Date()));
		System.out.println(toHyphenatedYyyyMmdd(new Date()));
		System.out.println(toYyyyMmdd(new Date()));
		System.out.println(toHyphenatedYyMmdd(new Date()));
		System.out.println(toYyMmdd(new Date()));
		System.out.println(getYyMmDdNotHyphenated("180106"));
		System.out.println(getYyMmDd("18-01-06"));
		System.out.println(getYyyyMmDdNotHyphenated("20180106"));
		System.out.println(getHhMm(new Date(), "15:59"));
	}

	/**
	 * 以如下格式转换日期  
	 * 
	 * @param str
	 *                        (2018-01-06 16:00:44)
	 * @return
	 */
	public final static Date getYyyyMmDdHhMm(String str) {
		if (StringUtils.isNullOrEmpty(str))
			return null;
		try {
			String[] strs = str.split(" ");
			String[] strDays = strs[0].split("-");
			int nYear = Integer.parseInt(strDays[0]);
			int nMonth = Integer.parseInt(strDays[1]);
			int nDay = Integer.parseInt(strDays[2]);

			String[] strTimes = strs[1].split(":");
			int nHour = Integer.parseInt(strTimes[0]);
			int nMinute = Integer.parseInt(strTimes[1]);
			int nSecond = 0;
			Calendar cal = new GregorianCalendar(nYear, nMonth - 1, nDay,
					nHour, nMinute, nSecond);
			return cal.getTime();
		} catch (ArrayIndexOutOfBoundsException e) {
			logger.warn("", e);
			return null;
		} catch (NumberFormatException e) {
			logger.warn("", e);
			return null;
		} catch (Exception e) {
			logger.warn("", e);
			return null;

		}
	}

	/**
	 * 以如下格式转换日期  
	 * 
	 * @param str
	 *                        (2018-01-06 16:00:44)
	 * @return
	 */
	public final static Date getYyyyMmDdHhMmSsFlexible(String str) {
		if (StringUtils.isNullOrEmpty(str))
			return null;
		try {
			String[] strs = str.split(" ");
			String[] strDays = strs[0].split("-");
			int nYear = Integer.parseInt(strDays[0]);
			int nMonth = Integer.parseInt(strDays[1]);
			int nDay = Integer.parseInt(strDays[2]);

			int nHour = 0;
			int nMinute = 0;
			int nSecond = 0;
			if (strs.length > 1) {
				String[] strTimes = strs[1].split(":");
				if (strTimes.length > 1)
					nHour = Integer.parseInt(strTimes[0]);
				if (strTimes.length > 2)
					nMinute = Integer.parseInt(strTimes[1]);
				if (strTimes.length > 3)
					nSecond = Integer.parseInt(strTimes[2]);
			}
			Calendar cal = new GregorianCalendar(nYear, nMonth - 1, nDay,
					nHour, nMinute, nSecond);
			return cal.getTime();
		} catch (ArrayIndexOutOfBoundsException e) {
			logger.warn("", e);
			return null;
		} catch (NumberFormatException e) {
			logger.warn("", e);
			return null;
		} catch (Exception e) {
			logger.warn("", e);
			return null;

		}
	}

	/**
	 * 以某天为标准按以如下时间格式转换日期  
	 * 
	 * @param str
	 *                        (15:59)
	 * @return
	 */
	public final static Date getHhMm(Date date, String str) {
		if (StringUtils.isNullOrEmpty(str))
			return null;
		try {
			String[] strTimes = str.split(":");
			int nHour = Integer.parseInt(strTimes[0]);
			int nMinute = Integer.parseInt(strTimes[1]);
			int nSecond = 0;
			String strDay = toHyphenatedYyyyMmdd(date);
			String[] strDays = strDay.split("-");
			int nYear = Integer.parseInt(strDays[0]);
			int nMonth = Integer.parseInt(strDays[1]);
			int nDay = Integer.parseInt(strDays[2]);
			Calendar cal = new GregorianCalendar(nYear, nMonth - 1, nDay,
					nHour, nMinute, nSecond);
			return cal.getTime();
		} catch (ArrayIndexOutOfBoundsException e) {
			logger.warn("", e);
			return null;
		} catch (NumberFormatException e) {
			logger.warn("", e);
			return null;
		} catch (Exception e) {
			logger.warn("", e);
			return null;

		}
	}

	/**
	 * 以如下格式转换日期  
	 * 
	 * @param str
	 *                        (2018-01-06)
	 * @return
	 */
	public final static Date getYyyyMmDd(String str) {
		if (StringUtils.isNullOrEmpty(str))
			return null;
		try {
			// String[] strs = str.split(" ");
			String[] strDays = str.split("-");
			int nYear = Integer.parseInt(strDays[0]);
			int nMonth = Integer.parseInt(strDays[1]);
			int nDay = Integer.parseInt(strDays[2]);

			Calendar cal = new GregorianCalendar(nYear, nMonth - 1, nDay, 0, 0,
					0);
			return cal.getTime();
		} catch (ArrayIndexOutOfBoundsException e) {
			logger.warn("", e);
			return null;
		} catch (NumberFormatException e) {
			logger.warn("", e);
			return null;
		} catch (Exception e) {
			logger.warn("", e);
			return null;
		}
	}

	/**
	 * 以如下格式转换日期  
	 * 
	 * @param str
	 *                        (20180106)
	 * @return
	 */
	public final static Date getYyyyMmDdNotHyphenated(String str) {
		if (StringUtils.isNullOrEmpty(str))
			return null;
		try {
			// String[] strs = str.split(" ");
			int nYear = Integer.parseInt(str.substring(0, 4));
			int nMonth = Integer.parseInt(str.substring(4, 6));
			int nDay = Integer.parseInt(str.substring(6, 8));

			Calendar cal = new GregorianCalendar(nYear, nMonth - 1, nDay, 0, 0,
					0);
			return cal.getTime();
		} catch (ArrayIndexOutOfBoundsException e) {
			logger.warn("", e);
			return null;
		} catch (NumberFormatException e) {
			logger.warn("", e);
			return null;
		} catch (Exception e) {
			logger.warn("", e);
			return null;
		}
	}

	/**
	 * 以如下格式转换日期;注意年份必须是2000后的年份  
	 * 
	 * @param str
	 *                        (18-01-06)
	 * @return
	 */
	public final static Date getYyMmDd(String str) {
		if (StringUtils.isNullOrEmpty(str))
			return null;
		try {
			// String[] strs = str.split(" ");
			String[] strDays = str.split("-");
			int nYear = Integer.parseInt(strDays[0]);
			nYear += 2000;
			int nMonth = Integer.parseInt(strDays[1]);
			int nDay = Integer.parseInt(strDays[2]);

			Calendar cal = new GregorianCalendar(nYear, nMonth - 1, nDay, 0, 0,
					0);
			return cal.getTime();
		} catch (ArrayIndexOutOfBoundsException e) {
			logger.warn("", e);
			return null;
		} catch (NumberFormatException e) {
			logger.warn("", e);
			return null;
		} catch (Exception e) {
			logger.warn("", e);
			return null;
		}
	}

	/**
	 * 以如下格式转换日期;注意年份必须是2000后的年份  
	 * 
	 * @param str
	 *                        (180106)
	 * @return
	 */
	public final static Date getYyMmDdNotHyphenated(String str) {
		if (StringUtils.isNullOrEmpty(str))
			return null;
		try {
			int nYear = Integer.parseInt(str.substring(0, 2));
			nYear += 2000;
			int nMonth = Integer.parseInt(str.substring(2, 4));
			int nDay = Integer.parseInt(str.substring(4, 6));

			Calendar cal = new GregorianCalendar(nYear, nMonth - 1, nDay, 0, 0,
					0);
			return cal.getTime();
		} catch (ArrayIndexOutOfBoundsException e) {
			logger.warn("", e);
			return null;
		} catch (NumberFormatException e) {
			logger.warn("", e);
			return null;
		} catch (Exception e) {
			logger.warn("", e);
			return null;
		}
	}

	/**
	 * 返回时间的字符串格式如:180106  
	 * 
	 * @param aDate
	 * @return
	 */
	public final static String toYyMmdd(Date aDate) {
		if (aDate == null)
			return "";
		Calendar cal = new GregorianCalendar();
		cal.setTime(aDate);
		StringBuilder sb = new StringBuilder();
		int nYear = cal.get(Calendar.YEAR);
		nYear = nYear % 100;
		int nMonth = cal.get(Calendar.MONTH);
		nMonth++;
		int nDay = cal.get(Calendar.DAY_OF_MONTH);
		if (nYear < 10)
			sb.append('0');
		sb.append(nYear);
		if (nMonth < 10)
			sb.append('0');
		sb.append(nMonth);
		if (nDay < 10)
			sb.append('0');
		sb.append(nDay);
		return sb.toString();
	}

	/**
	 * 返回时间的字符串格式如:18-01-06  
	 * 
	 * @param aDate
	 * @return
	 */
	public final static String toHyphenatedYyMmdd(Date aDate) {
		if (aDate == null)
			return "";
		Calendar cal = new GregorianCalendar();
		cal.setTime(aDate);
		StringBuilder sb = new StringBuilder();
		int nYear = cal.get(Calendar.YEAR);
		nYear = nYear % 100;
		int nMonth = cal.get(Calendar.MONTH);
		nMonth++;
		int nDay = cal.get(Calendar.DAY_OF_MONTH);
		if (nYear < 10)
			sb.append('0');
		sb.append(nYear);
		sb.append('-');
		if (nMonth < 10)
			sb.append('0');
		sb.append(nMonth);
		sb.append('-');
		if (nDay < 10)
			sb.append('0');
		sb.append(nDay);
		return sb.toString();
	}

	/**
	 * 返回时间的字符串格式如:20180106  
	 * 
	 * @param aDate
	 * @return
	 */
	public final static String toYyyyMmdd(Date aDate) {
		if (aDate == null)
			return "";
		Calendar cal = new GregorianCalendar();
		cal.setTime(aDate);
		StringBuilder sb = new StringBuilder();
		int nYear = cal.get(Calendar.YEAR);
		int nMonth = cal.get(Calendar.MONTH);
		nMonth++;
		int nDay = cal.get(Calendar.DAY_OF_MONTH);

		sb.append(nYear);
		if (nMonth < 10)
			sb.append('0');
		sb.append(nMonth);
		if (nDay < 10)
			sb.append('0');
		sb.append(nDay);
		return sb.toString();
	}

	/**
	 * 返回时间的字符串格式如:2018-01-06  
	 * 
	 * @param aDate
	 * @return
	 */
	public final static String toHyphenatedYyyyMmdd(Date aDate) {
		if (aDate == null)
			return "";
		Calendar cal = new GregorianCalendar();
		cal.setTime(aDate);
		int nYear = cal.get(Calendar.YEAR);
		int nMonth = cal.get(Calendar.MONTH);
		nMonth++;
		int nDay = cal.get(Calendar.DAY_OF_MONTH);

		StringBuilder sb = new StringBuilder();
		sb.append(nYear);
		sb.append('-');
		if (nMonth < 10)
			sb.append('0');
		sb.append(nMonth);
		sb.append('-');
		if (nDay < 10)
			sb.append('0');
		sb.append(nDay);
		return sb.toString();
	}

	/**
	 * 返回时间的字符串格式如:2018-01-06 15:46  
	 * 
	 * @param aDate
	 * @return
	 */
	public final static String toHyphenatedYyyyMmDdHhMm(Date aDate) {
		if (aDate == null)
			return "";
		Calendar cal = new GregorianCalendar();
		cal.setTime(aDate);
		int nYear = cal.get(Calendar.YEAR);
		int nMonth = cal.get(Calendar.MONTH);
		nMonth++;
		int nDay = cal.get(Calendar.DAY_OF_MONTH);
		int nHour = cal.get(Calendar.HOUR_OF_DAY);
		int nMinute = cal.get(Calendar.MINUTE);

		StringBuilder sb = new StringBuilder();
		sb.append(nYear);
		sb.append('-');
		if (nMonth < 10)
			sb.append('0');
		sb.append(nMonth);
		sb.append('-');
		if (nDay < 10)
			sb.append('0');
		sb.append(nDay);

		sb.append(" ");
		if (nHour < 10)
			sb.append('0');
		sb.append(nHour);

		sb.append(":");
		if (nMinute < 10)
			sb.append('0');
		sb.append(nMinute);

		return sb.toString();
	}

	/**
	 * 返回时间的字符串格式如:2018-01-06 15:45:49  
	 * 
	 * @param aDate
	 * @return
	 */
	public final static String toHyphenatedYyyyMmDdHhMmSsFlexible(Date aDate) {
		if (aDate == null)
			return "";
		Calendar cal = new GregorianCalendar();
		cal.setTime(aDate);
		int nYear = cal.get(Calendar.YEAR);
		int nMonth = cal.get(Calendar.MONTH);
		nMonth++;
		int nDay = cal.get(Calendar.DAY_OF_MONTH);
		int nHour = cal.get(Calendar.HOUR_OF_DAY);
		int nMinute = cal.get(Calendar.MINUTE);
		int nSecond = cal.get(Calendar.SECOND);

		StringBuilder sb = new StringBuilder();
		sb.append(nYear);
		sb.append('-');
		if (nMonth < 10)
			sb.append('0');
		sb.append(nMonth);
		sb.append('-');
		if (nDay < 10)
			sb.append('0');
		sb.append(nDay);

		if (nHour > 0 || nMinute > 0 || nSecond > 0) {

			sb.append(" ");
			if (nHour < 10)
				sb.append('0');
			sb.append(nHour);

			sb.append(":");
			if (nMinute < 10)
				sb.append('0');
			sb.append(nMinute);

			if (nSecond > 0) {
				sb.append(":");
				if (nSecond < 10)
					sb.append('0');
				sb.append(nSecond);
			}
		}

		return sb.toString();
	}

	/**
	 * 返回时间的字符串格式如:2018-01-06 15:46  
	 * 
	 * @param aDate
	 * @return
	 */
	public final static String toYyyyMmddHHmm(Date aDate) {
		if (aDate == null)
			return "";
		Calendar cal = new GregorianCalendar();
		cal.setTime(aDate);

		int nYear = cal.get(Calendar.YEAR);
		int nMonth = cal.get(Calendar.MONTH);
		nMonth++;
		int nDay = cal.get(Calendar.DAY_OF_MONTH);
		int nHour = cal.get(Calendar.HOUR_OF_DAY);
		int nMinute = cal.get(Calendar.MINUTE);

		StringBuilder sb = new StringBuilder();
		sb.append(nYear);
		sb.append("-");

		if (nMonth < 10)
			sb.append('0');
		sb.append(nMonth);
		sb.append("-");

		if (nDay < 10)
			sb.append('0');
		sb.append(nDay);
		sb.append(" ");

		if (nHour < 10)
			sb.append('0');
		sb.append(nHour);
		sb.append(":");

		if (nMinute < 10)
			sb.append('0');
		sb.append(nMinute);
		return sb.toString();
	}

	/**
	 * 返回时间的字符串格式如:2018-01-06 15:45:49  
	 * 
	 * @param aDate
	 * @return
	 */
	public final static String toYyyymmddHhmmss(Date aDate) {
		if (aDate == null)
			return "";
		Calendar cal = new GregorianCalendar();
		cal.setTime(aDate);
		int nYear = cal.get(Calendar.YEAR);
		int nMonth = cal.get(Calendar.MONTH);
		nMonth++;
		int nDay = cal.get(Calendar.DAY_OF_MONTH);
		int nHour = cal.get(Calendar.HOUR_OF_DAY);
		int nMInute = cal.get(Calendar.MINUTE);
		int nSeconf = cal.get(Calendar.SECOND);

		StringBuilder sb = new StringBuilder();
		sb.append(nYear);
		sb.append('-');
		if (nMonth < 10)
			sb.append('0');
		sb.append(nMonth);
		sb.append('-');
		if (nDay < 10)
			sb.append('0');
		sb.append(nDay);

		sb.append(' ');

		if (nHour < 10)
			sb.append('0');
		sb.append(nHour);
		sb.append(':');
		if (nMInute < 10)
			sb.append('0');
		sb.append(nMInute);
		sb.append(':');
		if (nSeconf < 10)
			sb.append('0');
		sb.append(nSeconf);

		return sb.toString();
	}

	/**
	 * 获取时间的几点几分的字符串格式  
	 * 
	 * @param aDate
	 * @return
	 */
	public final static String toHHmm(Date aDate) {
		if (aDate == null)
			return "";
		Calendar cal = new GregorianCalendar();
		cal.setTime(aDate);

		int nHour = cal.get(Calendar.HOUR_OF_DAY);
		int nMinute = cal.get(Calendar.MINUTE);

		StringBuilder sb = new StringBuilder();

		if (nHour < 10)
			sb.append('0');
		sb.append(nHour);
		sb.append(":");

		if (nMinute < 10)
			sb.append('0');
		sb.append(nMinute);
		return sb.toString();
	}

	public static java.sql.Timestamp toTimestamp(Date theDate) {
		if (theDate == null)
			return null;
		return new Timestamp(theDate.getTime());
	}

	/**
	 * 判断当前的时小数是否在23:00---08:00内,如果在就自动commit到供应商下单  
	 * 
	 * @return
	 */
	public static boolean autoCommit() {
		SimpleDateFormat sdf = new SimpleDateFormat("HH");
		Date d = new Date();
		String str = sdf.format(d);
		int num = Integer.parseInt(str);
		return (num >= 23 || num < 8) ? true : false;
	}

	/**
	 * 获取当前日期的星期几  
	 * 
	 * @param date
	 *                        传入时间
	 * @return 星期几
	 */
	public static String getWeekOfDate(Date date) {
		String[] weekDays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
		if (w < 0)
			w = 0;
		return weekDays[w];
	}

    /**
	 * 获取工作日天数
	 * @param strStartDate
	 * @param strEndDate
	 * @return
	 */
	public static int workDays(String strStartDate, String strEndDate) {
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");

        Calendar cl1 = Calendar.getInstance();
        Calendar cl2 = Calendar.getInstance();

        try {
            cl1.setTime(df.parse(strStartDate));
            cl2.setTime(df.parse(strEndDate));

        } catch (ParseException e) {
            System.out.println("日期格式非法");
            e.printStackTrace();
        }

        int count = 0;
        while (cl1.compareTo(cl2) <= 0) {
            if (cl1.get(Calendar.DAY_OF_WEEK) != 7 && cl1.get(Calendar.DAY_OF_WEEK) != 1)
                count++;
            cl1.add(Calendar.DAY_OF_MONTH, 1);
        }
        return count;

    }
}

最后

以上就是聪明鱼为你收集整理的Date处理工具类的全部内容,希望文章能够帮你解决Date处理工具类所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部