Java日期操作工具類:DateUtil

jopen 11年前發布 | 79K 次閱讀 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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!