`
feiruqueshui
  • 浏览: 6563 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

日期工具类

    博客分类:
  • java
阅读更多

废话不说直接上代码:

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;
	}

}

 

分享到:
评论

相关推荐

    Java日期工具类

    Java日期工具类 1、日期的各种格式化 2、获取当前年度 3、获取当前月份 4、获取当前天号数 5、获取当前时间往前推一个月的时间 6、获取上个月("MMM yyyy") 7、获取上个月("yyyymm") 8、获取上个月("yyyy-mm") 9、...

    java日期工具类

    java日期工具类,java日期工具类,java日期工具类,java日期工具类

    DateUtils(日期工具类)

    DateUtils(日期工具类),包含日期格式化,解析等。

    日期工具类源码

    日期工具类

    日期工具类,包括各种日期之间的转换

    根据提供的文件信息,本文将对日期工具类进行深入解析,并详细介绍其包含的主要功能与实现方法。此工具类主要涉及到了日期格式化、日期解析、获取当前时间等实用操作。 ### 一、概述 该日期工具类名为 `DateUtil`...

    原创好用实用的日期工具类

    强大的好用的原创日期工具类: 1.返回当前日期字符串 yyyy-MM-dd 2.返回当前日期字符串 yyyy-MM-dd HH:mm:ss 3.根据指定时间格式解析日期字符串为Date对象 4.根据默认时间格式解析日期字符串为Date对象 5.根据指定...

    Java日期工具类,学习代码

    Java日期工具类是Java开发中不可或缺的一部分,它们用于处理日期和时间相关的操作。在Java中,日期和时间处理涉及到多个类和接口,如`java.util.Date`、`java.util.Calendar`、`java.text.SimpleDateFormat`以及Java...

    Java日期工具类,Java时间工具类,Java时间格式化

    本篇将围绕Java中的日期工具类和时间工具类展开讨论,同时会涉及到日期时间的格式化。 首先,Java 8之前,我们主要依赖`java.util.Date`和`java.text.SimpleDateFormat`这两个类来处理日期和时间。`Date`类用于表示...

    史上最全的日期工具类

    各种你能想到的日期计算,操作。包含常见的年月日间隔计算、比较、格式化

    时间日期工具类(包含java8新特性).zip

    `时间日期工具类`是提升开发效率的关键,它们提供了对日期和时间进行格式化、比较、计算等操作的便捷方法。在这个"时间日期工具类(包含java8新特性).zip"压缩包中,我们有两个文件:DateUtil.java和DateUtils.java...

Global site tag (gtag.js) - Google Analytics