Java Date格式化工具类

Java Date格式化工具类

整理了项目中常用到的日期及日期格式。

public class DateUtil {

	private static Date date = null;

	private static DateFormat dateFormat = null;

	private static Calendar calendar = null;

	/**
	 * 功能描述:格式化日期
	 * @param dateStr
	 *            字符型日期
	 * @param format
	 *            格式
	 * @return Date 日期
	 */
	public static Date parseDate(String dateStr, String format) {
		try {
			dateFormat = new SimpleDateFormat(format);
			String dt = dateStr.replaceAll("-", "/");
			if ((!dt.equals("")) && (dt.length() < format.length())) {
				dt += format.substring(dt.length()).replaceAll("[YyMmDdHhSs]", "0");
			}
			date = (Date) dateFormat.parse(dt);
		} catch (Exception e) {
		}
		return date;
	}

	/**
	 * 功能描述:格式化日期
	 * @param dateStr
	 *            字符型日期:YYYY-MM-DD 格式
	 * @return Date
	 */
	public static Date parseDate(String dateStr) {
		return parseDate(dateStr, "yyyy-MM-dd");
	}

	/**
	 * 功能描述:格式化输出日期
	 * @param date
	 *            日期
	 * @param format
	 *            格式
	 * @return 返回字符型日期
	 */
	public static String format(Date date, String format) {
		String result = "";
		try {
			if (date != null) {
				dateFormat = new SimpleDateFormat(format);
				result = dateFormat.format(date);
			}
		} catch (Exception e) {
		}
		return result;
	}

	/**
	 * 功能描述:格式化日期
	 * @param date
	 *            日期
	 * @return
	 */
	public static String format(Date date) {
		return format(date, "yyyy-MM-dd");
	}

	/**
	 * 功能描述:返回年份
	 * @param date
	 *            日期
	 * @return 返回年份
	 */
	public static int getYear(Date date) {
		calendar = Calendar.getInstance();
		calendar.setTime(date);
		return calendar.get(Calendar.YEAR);
	}

	/**
	 * 功能描述:返回月份
	 * @param date
	 *            日期
	 * @return 返回月份
	 */
	public static int getMonth(Date date) {
		calendar = Calendar.getInstance();
		calendar.setTime(date);
		return calendar.get(Calendar.MONTH) + 1;
	}

	/**
	 * 功能描述:返回日份
	 * @param date
	 *            日期
	 * @return 返回日份
	 */
	public static int getDay(Date date) {
		calendar = Calendar.getInstance();
		calendar.setTime(date);
		return calendar.get(Calendar.DAY_OF_MONTH);
	}

	/**
	 * 功能描述:返回小时
	 * @param date
	 *            日期
	 * @return 返回小时
	 */
	public static int getHour(Date date) {
		calendar = Calendar.getInstance();
		calendar.setTime(date);
		return calendar.get(Calendar.HOUR_OF_DAY);
	}

	/**
	 * 功能描述:返回分钟
	 * @param date
	 *            日期
	 * @return 返回分钟
	 */
	public static int getMinute(Date date) {
		calendar = Calendar.getInstance();
		calendar.setTime(date);
		return calendar.get(Calendar.MINUTE);
	}

	/**
	 * 返回秒钟
	 * @param date
	 *            日期
	 * @return 返回秒钟
	 */
	public static int getSecond(Date date) {
		calendar = Calendar.getInstance();
		calendar.setTime(date);
		return calendar.get(Calendar.SECOND);
	}

	/**
	 * 功能描述:返回毫秒
	 * @param date
	 *            日期
	 * @return 返回毫秒
	 */
	public static long getMillis(Date date) {
		calendar = Calendar.getInstance();
		calendar.setTime(date);
		return calendar.getTimeInMillis();
	}

	/**
	 * 功能描述:返回字符型日期
	 * @param date
	 *            日期
	 * @return 返回字符型日期 yyyy-MM-dd 格式
	 */
	public static String getDate(Date date) {
		return format(date, "yyyy-MM-dd");
	}

	/**
	 * 功能描述:获取当前日期
	 * @param date
	 *            日期
	 * @return String 日期字符串 yyyy-MM-dd格式
	 */
	public static String getNewDate() {
		String date = new SimpleDateFormat("yyyy-MM-dd").format(new Date());
		return date;
	}

	/**
	 * 功能描述:返回字符型时间
	 * @param date
	 *            日期
	 * @return 返回字符型时间 HH:mm:ss 格式
	 */
	public static String getTime(Date date) {
		return format(date, "HH:mm:ss");
	}

	/**
	 * 功能描述:获取当前时间
	 * @param date
	 *            日期
	 * @return String时间 HH:mm:ss 格式
	 */
	public static String getTNewime() {
		Date date = new Date();
		return format(date, "HH:mm:ss");
	}

	/**
	 * 功能描述:返回字符型日期时间
	 * @param date
	 *            日期
	 * @return 返回字符型日期时间 yyyy/MM/dd HH:mm:ss 格式
	 */
	public static String getDateTime(Date date) {
		return format(date, "yyyy-MM-dd HH:mm:ss");
	}

	/**
	 * 功能描述:日期相加
	 * @param date
	 *            日期
	 * @param day
	 *            int 天数
	 * @return 返回相加后的日期
	 */
	public static Date addDate(Date date, int day) {
		calendar = Calendar.getInstance();
		long millis = getMillis(date) + ((long) day) * 24 * 3600 * 1000;
		calendar.setTimeInMillis(millis);
		return calendar.getTime();
	}

	/**
	 * 功能描述:日期相减
	 * @param date
	 *            日期
	 * @param date1
	 *            日期
	 * @return 返回相减后的日期
	 */
	public static int diffDate(Date date, Date date1) {
		return (int) ((getMillis(date) - getMillis(date1)) / (24 * 3600 * 1000));
	}

	/**
	 * 功能描述:日期相减(保留1位小数)
	 * @param date
	 *            日期
	 * @param date1
	 *            日期
	 * @param type
	 *            决定结果的类型 minute:分钟 hour:小时 day:天数
	 * @return 返回相减后的日期
	 */
	public static double diffDate(Date start, Date end, String type) {
		double diff = (double) (getMillis(start) - getMillis(end));
		double times = 0.0;

		if ("minute".equals(type)) {
			times = diff / (1000 * 60);
		} else if ("hour".equals(type)) {
			times = diff / (1000 * 60 * 60);
		} else if ("day".equals(type)) {
			times = diff / (1000 * 60 * 60 * 24);
		}
		BigDecimal bg = new BigDecimal(times);
		double hours = bg.setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();
		return hours;
	}

	/**
	 * 功能描述:返回年龄
	 * @param date
	 *            日期
	 * @param date1
	 *            日期
	 * @return 返回相减后的日期
	 */
	public static String diffAge(String strs) {
		Date date = new Date();
		Date date1 = parseDate(strs);
		return (getYear(date) - getYear(date1)) + "";
	}

	/**
	 * 功能描述:取得指定月份的第一天
	 * @param strdate
	 *            字符型日期
	 * @return String yyyy-MM-dd 格式
	 */
	public static String getMonthBegin(String strdate) {
		date = parseDate(strdate);
		return format(date, "yyyy-MM") + "-01";
	}

	/**
	 * 功能描述:取得指定月份的最后一天
	 * @param strdate
	 *            字符型日期
	 * @return String 日期字符串 yyyy-MM-dd格式
	 */
	public static String getMonthEnd(String strdate) {
		date = parseDate(getMonthBegin(strdate));
		calendar = Calendar.getInstance();
		calendar.setTime(date);
		calendar.add(Calendar.MONTH, 1);
		calendar.add(Calendar.DAY_OF_YEAR, -1);
		return formatDate(calendar.getTime());
	}

	/**
	 * 功能描述:常用的格式化日期
	 * @param date
	 *            日期
	 * @return String 日期字符串 yyyy-MM-dd格式
	 */
	public static String formatDate(Date date) {
		return formatDateByFormat(date, "yyyy-MM-dd");
	}

	/**
	 * 功能描述:以指定的格式来格式化日期
	 * @param date
	 *            日期
	 * @param format
	 *            格式
	 * @return String 日期字符串
	 */
	public static String formatDateByFormat(Date date, String format) {
		String result = "";
		if (date != null) {
			try {
				SimpleDateFormat sdf = new SimpleDateFormat(format);
				result = sdf.format(date);
			} catch (Exception ex) {
				ex.printStackTrace();
			}
		}
		return result;
	}

	/**
	 * 获取当前时间 (yyyy-MM-dd HH:mm:ss)
	 * 
	 */
	public static String getThisDate() {
		String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
		return date;
	}

	/**
	 * 获取当前时间 (yyyy-MM-dd HH:mm:ss:SSS)
	 */
	public static String getThisDateTime() {
		String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS").format(new Date());
		return date;
	}

	/*
	* 返回日期区间
	*/
	public static int getDataBetween(String start) {
		Date newDate = new Date();
		DateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd");
		Date end = null;
		try {
			end = dateFormat1.parse(start);
		} catch (ParseException e) {
			return 0;
		}
		return diffDate(newDate, end);
	}

	/**
	 * 返回月份天数
	 * @param strDate
	 * @return int
	 * @throws ParseException
	 */
	public static int getMonthDay(String strDate) throws ParseException {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Calendar calendar = new GregorianCalendar();
		Date date = sdf.parse(strDate);
		calendar.setTime(date);
		return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
	}

	/**
	 * 返回月份天数
	 * @param strDate
	 * @return int
	 * @throws ParseException
	 */
	public static int getWeek(String strDate) throws ParseException {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Date date = sdf.parse(strDate);
		Calendar c = Calendar.getInstance();
		c.setTime(date);
		return c.get(Calendar.DAY_OF_WEEK) - 1;
	}

	/**
	 * 功能描述:获取当前日期是本年的第几周
	 * @param today
	 *            日期
	 * @return int 周数
	 */
	public static int getWork(String today) throws ParseException {
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		Date date = format.parse(today);
		Calendar calendar = Calendar.getInstance();
		calendar.setFirstDayOfWeek(Calendar.MONDAY);
		calendar.setTime(date);
		return calendar.get(Calendar.WEEK_OF_YEAR);
		// System.out.println(calendar.get(Calendar.WEEK_OF_YEAR));
	}

	/**
	 * 
	 * @Title: getWeekNo
	 * @Description: 获取星期 0代表星期日
	 * @param dt
	 * @return int
	 */
	public static int getWeekNo(Date dt) {
		Calendar cal = Calendar.getInstance();
		cal.setTime(dt);
		int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
		if (w < 0)
			w = 0;
		return w;
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值