Java日期操作工具類:DateUtil
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; } } </pre><br />
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!