废话不说直接上代码:
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日期工具类 1、日期的各种格式化 2、获取当前年度 3、获取当前月份 4、获取当前天号数 5、获取当前时间往前推一个月的时间 6、获取上个月("MMM yyyy") 7、获取上个月("yyyymm") 8、获取上个月("yyyy-mm") 9、...
java日期工具类,java日期工具类,java日期工具类,java日期工具类
DateUtils(日期工具类),包含日期格式化,解析等。
日期工具类
根据提供的文件信息,本文将对日期工具类进行深入解析,并详细介绍其包含的主要功能与实现方法。此工具类主要涉及到了日期格式化、日期解析、获取当前时间等实用操作。 ### 一、概述 该日期工具类名为 `DateUtil`...
强大的好用的原创日期工具类: 1.返回当前日期字符串 yyyy-MM-dd 2.返回当前日期字符串 yyyy-MM-dd HH:mm:ss 3.根据指定时间格式解析日期字符串为Date对象 4.根据默认时间格式解析日期字符串为Date对象 5.根据指定...
Java日期工具类是Java开发中不可或缺的一部分,它们用于处理日期和时间相关的操作。在Java中,日期和时间处理涉及到多个类和接口,如`java.util.Date`、`java.util.Calendar`、`java.text.SimpleDateFormat`以及Java...
本篇将围绕Java中的日期工具类和时间工具类展开讨论,同时会涉及到日期时间的格式化。 首先,Java 8之前,我们主要依赖`java.util.Date`和`java.text.SimpleDateFormat`这两个类来处理日期和时间。`Date`类用于表示...
各种你能想到的日期计算,操作。包含常见的年月日间隔计算、比较、格式化
`时间日期工具类`是提升开发效率的关键,它们提供了对日期和时间进行格式化、比较、计算等操作的便捷方法。在这个"时间日期工具类(包含java8新特性).zip"压缩包中,我们有两个文件:DateUtil.java和DateUtils.java...