Java日期操作

来源:互联网 发布:淘宝qq返利机器人 编辑:程序博客网 时间:2024/05/16 03:55
importjava.text.ParseException; 
importjava.text.SimpleDateFormat; 
importjava.util.Calendar; 
importjava.util.Date; 
importjava.util.HashMap; 
importjava.util.Map; 
   
/** 
 * 所有时间按当前2014-12-02计算 
 * @author alone 
 
 */ 
publicclass DateUtil { 
    privatestatic String ymdhms = "yyyy-MM-dd HH:mm:ss";   
    privatestatic String ymd = "yyyy-MM-dd";   
    publicstatic SimpleDateFormat ymdSDF = newSimpleDateFormat(ymd);   
    privatestatic String year = "yyyy";   
    privatestatic String month = "MM";   
    privatestatic String day = "dd";   
    publicstatic SimpleDateFormat yyyyMMddHHmmss = newSimpleDateFormat(ymdhms);   
    publicstatic SimpleDateFormat yearSDF = newSimpleDateFormat(year);   
    publicstatic SimpleDateFormat monthSDF = newSimpleDateFormat(month);   
    publicstatic SimpleDateFormat daySDF = newSimpleDateFormat(day);   
     
    publicstatic SimpleDateFormat yyyyMMddHHmm = newSimpleDateFormat(   
            "yyyy-MM-dd HH:mm");   
     
    publicstatic SimpleDateFormat yyyyMMdd = newSimpleDateFormat("yyyy-MM-dd");   
     
    publicstatic SimpleDateFormat yyyyMMddHH_NOT_ = newSimpleDateFormat(   
            "yyyyMMdd");   
     
    publicstatic long DATEMM = 86400L;   
    /** 
     * 获得当前时间 
     * 格式:2014-12-02 10:38:53 
     * @return String 
     */ 
    publicstatic String getCurrentTime() {   
        returnyyyyMMddHHmmss.format(newDate());   
    }   
    /** 
     * 可以获取昨天的日期 
     * 格式:2014-12-01 
     * @return String 
     */ 
    publicstatic String getYesterdayYYYYMMDD() {   
        Date date = newDate(System.currentTimeMillis() - DATEMM * 1000L);   
        String str = yyyyMMdd.format(date);   
        try{   
            date = yyyyMMddHHmmss.parse(str + " 00:00:00");   
            returnyyyyMMdd.format(date);   
        catch(ParseException e) {   
            e.printStackTrace();   
        }   
        return"";   
    }   
    /** 
     * 可以获取后退N天的日期 
     * 格式:传入2 得到2014-11-30 
     * @param backDay 
     * @return String 
     */ 
    publicString getStrDate(String backDay) { 
        Calendar calendar = Calendar.getInstance() ; 
        calendar.add(Calendar.DATE, Integer.parseInt("-"+ backDay)); 
        SimpleDateFormat sdf = newSimpleDateFormat("yyyy-MM-dd") ; 
        String back = sdf.format(calendar.getTime()) ; 
        returnback ; 
    
    /** 
     *获取当前的年、月、日 
     * @return String 
     */ 
    publicstatic String getCurrentYear() {   
        returnyearSDF.format(newDate());   
    }  
    publicstatic String getCurrentMonth() {   
        returnmonthSDF.format(newDate());   
    }  
    publicstatic String getCurrentDay() {   
        returndaySDF.format(newDate());   
    }   
    /** 
     * 获取年月日 也就是当前时间 
     * 格式:2014-12-02 
     * @return String 
     */ 
    publicstatic String getCurrentymd() {   
        returnymdSDF.format(newDate());   
    }   
    /** 
     * 获取今天0点开始的秒数 
     * @return long 
     */ 
    publicstatic long getTimeNumberToday() {   
        Date date = newDate();   
        String str = yyyyMMdd.format(date);   
        try{   
            date = yyyyMMdd.parse(str);   
            returndate.getTime() / 1000L;   
        catch(ParseException e) {   
            e.printStackTrace();   
        }   
        return0L;   
    }   
    /** 
     * 获取今天的日期 
     * 格式:20141202 
     * @return String 
     */ 
    publicstatic String getTodateString() {   
        String str = yyyyMMddHH_NOT_.format(newDate());   
        returnstr;   
    }  
    /** 
     * 获取昨天的日期 
     * 格式:20141201 
     * @return String 
     */ 
    publicstatic String getYesterdayString() {   
        Date date = newDate(System.currentTimeMillis() - DATEMM * 1000L);   
        String str = yyyyMMddHH_NOT_.format(date);   
        returnstr;   
    }   
    /**   
     * 获得昨天零点   
     *    
     * @return Date 
     */   
    publicstatic 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);   
        returncal.getTime();   
    }   
    /**   
     * 把long型日期转String ;---OK   
     *    
     * @param date   
     *            long型日期;   
     * @param format   
     *            日期格式;   
     * @return   
     */   
    publicstatic String longToString(longdate, String format) {   
        SimpleDateFormat sdf = newSimpleDateFormat(format);   
        // 前面的lSysTime是秒数,先乘1000得到毫秒数,再转为java.util.Date类型   
        java.util.Date dt2 = newDate(date * 1000L);   
        String sDateTime = sdf.format(dt2); // 得到精确到秒的表示:08/31/2006 21:08:00   
        returnsDateTime;   
    }   
     
    /**   
     * 获得今天零点   
     *    
     * @return Date 
     */   
    publicstatic Date getTodayZeroHour() {   
        Calendar cal = Calendar.getInstance();   
        cal.set(Calendar.SECOND, 0);   
        cal.set(Calendar.MINUTE, 0);   
        cal.set(Calendar.HOUR, 0);   
        returncal.getTime();   
    }  
    /**   
     * 获得昨天23时59分59秒   
     *    
     * @return   
     */   
    publicstatic 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);   
        returncal.getTime();   
    }   
    /**   
     * String To Date ---OK   
     *    
     * @param date   
     *            待转换的字符串型日期;   
     * @param format   
     *            转化的日期格式   
     * @return 返回该字符串的日期型数据;   
     */   
    publicstatic Date stringToDate(String date, String format) {   
        SimpleDateFormat sdf = newSimpleDateFormat(format);   
        try{   
            returnsdf.parse(date);   
        catch(ParseException e) {   
            returnnull;   
        }   
    }   
     
    /**   
     * 获得指定日期所在的自然周的第一天,即周日   
     *    
     * @param date   
     *            日期   
     * @return 自然周的第一天   
     */   
    publicstatic Date getStartDayOfWeek(Date date) {   
        Calendar c = Calendar.getInstance();   
        c.setTime(date);   
        c.set(Calendar.DAY_OF_WEEK, 1);   
        date = c.getTime();   
        returndate;   
    }   
     
    /**   
     * 获得指定日期所在的自然周的最后一天,即周六   
     *    
     * @param date   
     * @return   
     */   
    publicstatic Date getLastDayOfWeek(Date date) {   
        Calendar c = Calendar.getInstance();   
        c.setTime(date);   
        c.set(Calendar.DAY_OF_WEEK, 7);   
        date = c.getTime();   
        returndate;   
    }   
     
    /**   
     * 获得指定日期所在当月第一天   
     *    
     * @param date   
     * @return   
     */   
    publicstatic Date getStartDayOfMonth(Date date) {   
        Calendar c = Calendar.getInstance();   
        c.setTime(date);   
        c.set(Calendar.DAY_OF_MONTH, 1);   
        date = c.getTime();   
        returndate;   
    }   
     
    /**   
     * 获得指定日期所在当月最后一天   
     *    
     * @param date   
     * @return   
     */   
    publicstatic 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();   
        returndate;   
    }   
     
    /**   
     * 获得指定日期的下一个月的第一天   
     *    
     * @param date   
     * @return   
     */   
    publicstatic 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();   
        returndate;   
    }   
     
    /**   
     * 获得指定日期的下一个月的最后一天   
     *    
     * @param date   
     * @return   
     */   
    publicstatic 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();   
        returndate;   
    }   
     
    /**   
     *    
     * 求某一个时间向前多少秒的时间(currentTimeToBefer)---OK   
     *    
     * @param givedTime   
     *            给定的时间   
     * @param interval   
     *            间隔时间的毫秒数;计算方式 :n(天)*24(小时)*60(分钟)*60(秒)(类型)   
     * @param format_Date_Sign   
     *            输出日期的格式;如yyyy-MM-dd、yyyyMMdd等;   
     */   
    publicstatic String givedTimeToBefer(String givedTime, longinterval,   
            String format_Date_Sign) {   
        String tomorrow = null;   
        try{   
            SimpleDateFormat sdf = newSimpleDateFormat(format_Date_Sign);   
            Date gDate = sdf.parse(givedTime);   
            longcurrent = gDate.getTime(); // 将Calendar表示的时间转换成毫秒   
            longbeforeOrAfter = current - interval * 1000L; // 将Calendar表示的时间转换成毫秒   
            Date date = newDate(beforeOrAfter); // 用timeTwo作参数构造date2   
            tomorrow = newSimpleDateFormat(format_Date_Sign).format(date);   
        catch(ParseException e) {   
            e.printStackTrace();   
        }   
        returntomorrow;   
    }   
    /**   
     * 把String 日期转换成long型日期;---OK   
     *    
     * @param date   
     *            String 型日期;   
     * @param format   
     *            日期格式;   
     * @return   
     */   
    publicstatic long stringToLong(String date, String format) {   
        SimpleDateFormat sdf = newSimpleDateFormat(format);   
        Date dt2 = null;   
        longlTime = 0;   
        try{   
            dt2 = sdf.parse(date);   
            // 继续转换得到秒数的long型   
            lTime = dt2.getTime() / 1000;   
        catch(ParseException e) {   
            e.printStackTrace();   
        }   
     
        returnlTime;   
    }   
     
    /**   
     * 得到二个日期间的间隔日期;   
     *    
     * @param endTime   
     *            结束时间   
     * @param beginTime   
     *            开始时间   
     * @param isEndTime   
     *            是否包含结束日期;   
     * @return   
     */   
    publicstatic Map<String, String> getTwoDay(String endTime,   
            String beginTime, booleanisEndTime) {   
        Map<String, String> result = newHashMap<String, String>();   
        if((endTime == null|| endTime.equals("") || (beginTime == null|| beginTime   
                .equals(""))))   
            returnnull;   
        try{   
            java.util.Date date = ymdSDF.parse(endTime);   
            endTime = ymdSDF.format(date);   
            java.util.Date mydate = ymdSDF.parse(beginTime);   
            longday = (date.getTime() - mydate.getTime())   
                    / (2460601000);   
            result = getDate(endTime, Integer.parseInt(day + ""), isEndTime);   
        catch(Exception e) {   
        }   
        returnresult;   
    }   
     
    /**   
     * 得到二个日期间的间隔日期;   
     *    
     * @param endTime   
     *            结束时间   
     * @param beginTime   
     *            开始时间   
     * @param isEndTime   
     *            是否包含结束日期;   
     * @return   
     */   
    publicstatic Integer getTwoDayInterval(String endTime, String beginTime,   
            booleanisEndTime) {   
        if((endTime == null|| endTime.equals("") || (beginTime == null|| beginTime   
                .equals(""))))   
            return0;   
        longday = 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()) / (2460601000);   
        catch(Exception e) {   
            return0 ;   
        }   
        returnInteger.parseInt(day + "");   
    }   
     
    /**   
     * 根据结束时间以及间隔差值,求符合要求的日期集合;   
     *    
     * @param endTime   
     * @param interval   
     * @param isEndTime   
     * @return   
     */   
    publicstatic Map<String, String> getDate(String endTime, Integer interval,   
            booleanisEndTime) {   
        Map<String, String> result = newHashMap<String, String>();   
        if(interval == 0|| isEndTime) {   
            if(isEndTime)   
                result.put(endTime, endTime);   
        }   
        if(interval > 0) {   
            intbegin = 0;   
            for(inti = begin; i < interval; i++) {   
                endTime = givedTimeToBefer(endTime, DATEMM, ymd);   
                result.put(endTime, endTime);   
            }   
        }   
        returnresult;   
    }   
}




==============================================
转载地址:http://www.open-open.com/lib/view/open1418004025105.html

0 0
原创粉丝点击