标签:
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.Map; /** * 全部时间按当前2014-12-02计算 * @author alone * */ public class DateUtil { private static String ymdhms = "yyyy-MM-dd HH:mm:ss"; private static String ymd = "yyyy-MM-dd"; public static SimpleDateFormat ymdSDF = new SimpleDateFormat(ymd); private static String year = "yyyy"; private static String month = "MM"; private static String day = "dd"; public static SimpleDateFormat yyyyMMddHHmmss = new SimpleDateFormat(ymdhms); public static SimpleDateFormat yearSDF = new SimpleDateFormat(year); public static SimpleDateFormat monthSDF = new SimpleDateFormat(month); public static SimpleDateFormat daySDF = new SimpleDateFormat(day); public static SimpleDateFormat yyyyMMddHHmm = new SimpleDateFormat( "yyyy-MM-dd HH:mm"); public static SimpleDateFormat yyyyMMdd = new SimpleDateFormat("yyyy-MM-dd"); public static SimpleDateFormat yyyyMMddHH_NOT_ = new SimpleDateFormat( "yyyyMMdd"); public static long DATEMM = 86400L; /** * 获得当前时间 * 格式:2014-12-02 10:38:53 * @return String */ public static String getCurrentTime() { return yyyyMMddHHmmss.format(new Date()); } /** * 能够获取昨天的日期 * 格式:2014-12-01 * @return String */ public static String getYesterdayYYYYMMDD() { Date date = new Date(System.currentTimeMillis() - DATEMM * 1000L); String str = yyyyMMdd.format(date); try { date = yyyyMMddHHmmss.parse(str + " 00:00:00"); return yyyyMMdd.format(date); } catch (ParseException e) { e.printStackTrace(); } return ""; } /** * 能够获取后退N天的日期 * 格式:传入2 得到2014-11-30 * @param backDay * @return String */ public String getStrDate(String backDay) { Calendar calendar = Calendar.getInstance() ; calendar.add(Calendar.DATE, Integer.parseInt("-" + backDay)); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd") ; String back = sdf.format(calendar.getTime()) ; return back ; } /** *获取当前的年、月、日 * @return String */ public static String getCurrentYear() { return yearSDF.format(new Date()); } public static String getCurrentMonth() { return monthSDF.format(new Date()); } public static String getCurrentDay() { return daySDF.format(new Date()); } /** * 获取年月日 也就是当前时间 * 格式:2014-12-02 * @return String */ public static String getCurrentymd() { return ymdSDF.format(new Date()); } /** * 获取今天0点開始的秒数 * @return long */ public static long getTimeNumberToday() { Date date = new Date(); String str = yyyyMMdd.format(date); try { date = yyyyMMdd.parse(str); return date.getTime() / 1000L; } catch (ParseException e) { e.printStackTrace(); } return 0L; } /** * 获取今天的日期 * 格式:20141202 * @return String */ public static String getTodateString() { String str = yyyyMMddHH_NOT_.format(new Date()); return str; } /** * 获取昨天的日期 * 格式:20141201 * @return String */ public static String getYesterdayString() { Date date = new Date(System.currentTimeMillis() - DATEMM * 1000L); String str = yyyyMMddHH_NOT_.format(date); return str; } /** * 获得昨天零点 * * @return Date */ public static Date getYesterDayZeroHour() { Calendar cal = Calendar.getInstance(); cal.add(Calendar.DATE, -1); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.HOUR, 0); return cal.getTime(); } /** * 把long型日期转String ;---OK * * @param date * long型日期; * @param format * 日期格式。 * @return */ public static String longToString(long date, String format) { SimpleDateFormat sdf = new SimpleDateFormat(format); // 前面的lSysTime是秒数,先乘1000得到毫秒数。再转为java.util.Date类型 java.util.Date dt2 = new Date(date * 1000L); String sDateTime = sdf.format(dt2); // 得到精确到秒的表示:08/31/2006 21:08:00 return sDateTime; } /** * 获得今天零点 * * @return Date */ public static Date getTodayZeroHour() { Calendar cal = Calendar.getInstance(); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.HOUR, 0); return cal.getTime(); } /** * 获得昨天23时59分59秒 * * @return */ public static Date getYesterDay24Hour() { Calendar cal = Calendar.getInstance(); cal.add(Calendar.DATE, -1); cal.set(Calendar.SECOND, 59); cal.set(Calendar.MINUTE, 59); cal.set(Calendar.HOUR, 23); return cal.getTime(); } /** * String To Date ---OK * * @param date * 待转换的字符串型日期; * @param format * 转化的日期格式 * @return 返回该字符串的日期型数据; */ public static Date stringToDate(String date, String format) { SimpleDateFormat sdf = new SimpleDateFormat(format); try { return sdf.parse(date); } catch (ParseException e) { return null; } } /** * 获得指定日期所在的自然周的第一天,即周日 * * @param date * 日期 * @return 自然周的第一天 */ public static Date getStartDayOfWeek(Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); c.set(Calendar.DAY_OF_WEEK, 1); date = c.getTime(); return date; } /** * 获得指定日期所在的自然周的最后一天,即周六 * * @param date * @return */ public static Date getLastDayOfWeek(Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); c.set(Calendar.DAY_OF_WEEK, 7); date = c.getTime(); return date; } /** * 获得指定日期所在当月第一天 * * @param date * @return */ public static Date getStartDayOfMonth(Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); c.set(Calendar.DAY_OF_MONTH, 1); date = c.getTime(); return date; } /** * 获得指定日期所在当月最后一天 * * @param date * @return */ public static Date getLastDayOfMonth(Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); c.set(Calendar.DATE, 1); c.add(Calendar.MONTH, 1); c.add(Calendar.DATE, -1); date = c.getTime(); return date; } /** * 获得指定日期的下一个月的第一天 * * @param date * @return */ public static Date getStartDayOfNextMonth(Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); c.add(Calendar.MONTH, 1); c.set(Calendar.DAY_OF_MONTH, 1); date = c.getTime(); return date; } /** * 获得指定日期的下一个月的最后一天 * * @param date * @return */ public static Date getLastDayOfNextMonth(Date date) { Calendar c = Calendar.getInstance(); c.setTime(date); c.set(Calendar.DATE, 1); c.add(Calendar.MONTH, 2); c.add(Calendar.DATE, -1); date = c.getTime(); return date; } /** * * 求某一个时间向前多少秒的时间(currentTimeToBefer)---OK * * @param givedTime * 给定的时间 * @param interval * 间隔时间的毫秒数。计算方式 :n(天)*24(小时)*60(分钟)*60(秒)(类型) * @param format_Date_Sign * 输出日期的格式;如yyyy-MM-dd、yyyyMMdd等; */ public static String givedTimeToBefer(String givedTime, long interval, String format_Date_Sign) { String tomorrow = null; try { SimpleDateFormat sdf = new SimpleDateFormat(format_Date_Sign); Date gDate = sdf.parse(givedTime); long current = gDate.getTime(); // 将Calendar表示的时间转换成毫秒 long beforeOrAfter = current - interval * 1000L; // 将Calendar表示的时间转换成毫秒 Date date = new Date(beforeOrAfter); // 用timeTwo作參数构造date2 tomorrow = new SimpleDateFormat(format_Date_Sign).format(date); } catch (ParseException e) { e.printStackTrace(); } return tomorrow; } /** * 把String 日期转换成long型日期。---OK * * @param date * String 型日期; * @param format * 日期格式; * @return */ public static long stringToLong(String date, String format) { SimpleDateFormat sdf = new SimpleDateFormat(format); Date dt2 = null; long lTime = 0; try { dt2 = sdf.parse(date); // 继续转换得到秒数的long型 lTime = dt2.getTime() / 1000; } catch (ParseException e) { e.printStackTrace(); } return lTime; } /** * 得到二个日期间的间隔日期; * * @param endTime * 结束时间 * @param beginTime * 開始时间 * @param isEndTime * 是否包括结束日期。 * @return */ public static Map<String, String> getTwoDay(String endTime, String beginTime, boolean isEndTime) { Map<String, String> result = new HashMap<String, String>(); if ((endTime == null || endTime.equals("") || (beginTime == null || beginTime .equals("")))) return null; try { java.util.Date date = ymdSDF.parse(endTime); endTime = ymdSDF.format(date); java.util.Date mydate = ymdSDF.parse(beginTime); long day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000); result = getDate(endTime, Integer.parseInt(day + ""), isEndTime); } catch (Exception e) { } return result; } /** * 得到二个日期间的间隔日期; * * @param endTime * 结束时间 * @param beginTime * 開始时间 * @param isEndTime * 是否包括结束日期; * @return */ public static Integer getTwoDayInterval(String endTime, String beginTime, boolean isEndTime) { if ((endTime == null || endTime.equals("") || (beginTime == null || beginTime .equals("")))) return 0; long day = 0l; try { java.util.Date date = ymdSDF.parse(endTime); endTime = ymdSDF.format(date); java.util.Date mydate = ymdSDF.parse(beginTime); day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000); } catch (Exception e) { return 0 ; } return Integer.parseInt(day + ""); } /** * 依据结束时间以及间隔差值,求符合要求的日期集合。 * * @param endTime * @param interval * @param isEndTime * @return */ public static Map<String, String> getDate(String endTime, Integer interval, boolean isEndTime) { Map<String, String> result = new HashMap<String, String>(); if (interval == 0 || isEndTime) { if (isEndTime) result.put(endTime, endTime); } if (interval > 0) { int begin = 0; for (int i = begin; i < interval; i++) { endTime = givedTimeToBefer(endTime, DATEMM, ymd); result.put(endTime, endTime); } } return result; } }
版权声明:本文博客原创文章,博客,未经同意,不得转载。
标签:
原文地址:http://www.cnblogs.com/gcczhongduan/p/4685371.html