日期转换工具类

       都是一些比较常用的日期工具类

       

public final class DateUtils {

	/**
	 * 构造函数。
	 */
	private DateUtils() {
	}

	/**
	 * 取得AP系统时间。
	 *
	 * @return AP系统时间
	 */
	public static Date getSystemDate() {
		return new Date();
	}

	/**
	 * 取得AP系统时间,不包括时分秒。
	 *
	 * @return AP系统时间
	 */
	public static Date getDate() {
		Calendar calendar = getSystemCalendar();
		calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DATE), 0, 0, 0);
		return DateUtils.convertString2Date(DateUtils.convertDate2String(calendar.getTime(), "yyyyMMdd"),"yyyyMMdd");
	}

	/**
	 * 取得AP系统时间。
	 *
	 * @return AP系统时间
	 */
	public static Calendar getSystemCalendar() {
		return Calendar.getInstance();
	}

	/**
	 * 系统日期的年月日时分秒毫秒的文字列,取得方法。
	 *
	 * @return 年月日时分秒毫秒的文字列
	 */
	public static String getTimeStamp() {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
		return sdf.format(getSystemDate());
	}

	/**
	 * 参数的字符串使用指定的格式转换日期型的方法。
	 *
	 * @param str 转换的对象
	 * @param pattern 日期时间格式的模式
	 * @return 参数null的时候返回null,字符串时按照指定的日期时间格式实行Date型转换
	 */
	public static Date convertString2Date(String str, String pattern) {
		if (str == null || "".equals(str)) {
			return null;
		}
		SimpleDateFormat sdf = new SimpleDateFormat(pattern);
		Calendar calendar = Calendar.getInstance();
		try {
			calendar.setTime(sdf.parse(str.trim()));
		} catch (ParseException ex) {
			throw new RuntimeException(ex);
		}
		return calendar.getTime();
	}

	/**
	 * 参数的日期型使用指定的格式转换字符串的方法。
	 *
	 * @param date 转换的对象
	 * @param pattern 日期时间格式的模式
	 * @return 参数null的时候返回null,字符串时按照指定的日期时间格式实行String型转换
	 */
	public static String convertDate2String(Date date, String pattern) {
		if (date == null) {
			return null;
		}
		SimpleDateFormat sdf = new SimpleDateFormat(pattern);
		return sdf.format(date);
	}

	/**
	 * 参数的日期被指定的日加算的方法。
	 *
	 * @param date 日期
	 * @param day 加算的日
	 * @return 加算后的日期
	 */
	public static Date addDay(Date date, int day) {
		if (date == null) {
			return null;
		}
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		calendar.add(Calendar.DATE, day);
		return calendar.getTime();
	}

	/**
	 * 参数的日期被指定的秒加算的方法。
	 *
	 * @param date 日期
	 * @param second 加算的秒
	 * @return 加算后的日期
	 */
	public static Date addSecond(Date date, int second) {
		if (date == null) {
			return null;
		}
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		calendar.add(Calendar.SECOND, second);
		return calendar.getTime();
	}

	/**
	 * 参数的日期取得当月的首日
	 *
	 * @param date 日付
	 * @return 当月的首日
	 */
	public static Date getFirstDay(Date date) {
		if (date == null) {
			return null;
		}
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		calendar.set(Calendar.DAY_OF_MONTH, 1);
		return calendar.getTime();
	}

	/**
	 * 参数的日期取得当月的末日
	 *
	 * @param date 日付
	 * @return 当月的末日
	 */
	public static Date getLastDay(Date date) {
		if (date == null) {
			return null;
		}
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		calendar.set(Calendar.DATE, 1);
		calendar.roll(Calendar.DATE, -1);

		return calendar.getTime();
	}

	/**
	 * 字符串是否是正确日期格式的判定
	 *
	 * @param date 日期字符串
	 * @param pattern 日期时间格式的模式
	 * @return 字符是正确的日期格式  true
	 */
	public static boolean isValidDate(String date, String pattern) {
		if (date == null) {
			return false;
		}
		SimpleDateFormat sdf = new SimpleDateFormat(pattern);
		try {
			sdf.setLenient(false);
			sdf.parse(String.valueOf(date));
		} catch (ParseException ex) {
			return false;
		}
		return true;
	}

	/**
	 * 获取前后时间的日差的方法。
	 *
	 * @param stateDate 开始时间
	 * @param endDate 结束时间
	 * @return 前后时间的日差
	 */
	public static int dateDiff(Date stateDate, Date endDate) {
		return (int) ((endDate.getTime() - stateDate.getTime()) / (1000 * 60 * 60 * 24));
	}

    /**
     * 根据参数格式化日期方法。
     *
     * @param strDate 需要格式化的对象
     * @param origPattern  变换元的日期格式化参数(例如:yyyy-MM-dd;yyyyMMddhhmmss等)
     * @param destPattern  变化后的日期格式化参数(例如:yyyy-MM-dd;yyyyMMddhhmmss等)
     * @return 参数origDate是null场合或异常的场合返回空串,否则返回格式化后的日期
     */
    public static String formatDateTime(Object origDate, String origPattern, String destPattern) {
        String formatDate = "";
        String strDate = "";
        if (origDate == null) {
            return formatDate;
        }
        strDate = String.valueOf(origDate).trim();
        if ("".equals(strDate) || "0".equals(strDate)) {
            return formatDate;
        }

        SimpleDateFormat sdf = new SimpleDateFormat(origPattern);
        Calendar calendar = Calendar.getInstance();
        try {
            calendar.setTime(sdf.parse(strDate));
            sdf.applyPattern(destPattern);
            formatDate = sdf.format(calendar.getTime());
        } catch (ParseException ex) {
            throw new RuntimeException(ex);
        }

        return formatDate;
    }

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值