现在的位置: 首页 > 综合 > 正文

Java常用的日期处理类

2013年11月12日 ⁄ 综合 ⁄ 共 4903字 ⁄ 字号 评论关闭
import java.text.SimpleDateFormat;   
import java.util.ArrayList;   
import java.util.Calendar;   
import java.util.Date;   
import java.util.GregorianCalendar;   
import java.util.LinkedHashMap;   
  
/**  
 * 日期公用处理类  
 *   
 * @author SongJun  
 * @version 1.3  
 */  
public class DateUtil {   
    /**  
     * 解析一个日期之间的所有月份  
     *   
     * @param beginDateStr  
     * @param endDateStr  
     * @return  
     */  
    public static ArrayList getMonthList(String beginDateStr, String endDateStr) {   
        // 指定要解析的时间格式   
        SimpleDateFormat f = new SimpleDateFormat("yyyy-MM");   
        // 返回的月份列表   
        String sRet = "";   
  
        // 定义一些变量   
        Date beginDate = null;   
        Date endDate = null;   
  
        GregorianCalendar beginGC = null;   
        GregorianCalendar endGC = null;   
        ArrayList list = new ArrayList();   
  
        try {   
            // 将字符串parse成日期   
            beginDate = f.parse(beginDateStr);   
            endDate = f.parse(endDateStr);   
  
            // 设置日历   
            beginGC = new GregorianCalendar();   
            beginGC.setTime(beginDate);   
  
            endGC = new GregorianCalendar();   
            endGC.setTime(endDate);   
  
            // 直到两个时间相同   
            while (beginGC.getTime().compareTo(endGC.getTime()) <= 0) {   
                sRet = beginGC.get(Calendar.YEAR) + "-"  
                        + (beginGC.get(Calendar.MONTH) + 1);   
                list.add(sRet);   
                // 以月为单位,增加时间   
                beginGC.add(Calendar.MONTH, 1);   
            }   
            return list;   
        } catch (Exception e) {   
            e.printStackTrace();   
            return null;   
        }   
    }   
  
    /**  
     * 解析一个日期段之间的所有日期  
     *   
     * @param beginDateStr  
     *            开始日期  
     * @param endDateStr  
     *            结束日期  
     * @return  
     */  
    public static ArrayList getDayList(String beginDateStr, String endDateStr) {   
        // 指定要解析的时间格式   
        SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");   
  
        // 定义一些变量   
        Date beginDate = null;   
        Date endDate = null;   
  
        Calendar beginGC = null;   
        Calendar endGC = null;   
        ArrayList list = new ArrayList();   
  
        try {   
            // 将字符串parse成日期   
            beginDate = f.parse(beginDateStr);   
            endDate = f.parse(endDateStr);   
  
            // 设置日历   
            beginGC = Calendar.getInstance();   
            beginGC.setTime(beginDate);   
  
            endGC = Calendar.getInstance();   
            endGC.setTime(endDate);   
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");   
  
            // 直到两个时间相同   
            while (beginGC.getTime().compareTo(endGC.getTime()) <= 0) {   
  
                list.add(sdf.format(beginGC.getTime()));   
                // 以日为单位,增加时间   
                beginGC.add(Calendar.DAY_OF_MONTH, 1);   
            }   
            return list;   
        } catch (Exception e) {   
            e.printStackTrace();   
            return null;   
        }   
    }   
  
    public static ArrayList getYearList() {   
        ArrayList list = new ArrayList();   
        Calendar c = null;   
        c = Calendar.getInstance();   
        c.setTime(new Date());   
        int currYear = Calendar.getInstance().get(Calendar.YEAR);   
  
        int startYear = currYear - 5;   
        int endYear = currYear + 10;   
        for (int i = startYear; i < endYear; i++) {   
            list.add(new Integer(i));   
        }   
        return list;   
    }   
  
    public static int getCurrYear() {   
        return Calendar.getInstance().get(Calendar.YEAR);   
    }   
  
    /**  
     * 得到某一年周的总数  
     *   
     * @param year  
     * @return  
     */  
    public static LinkedHashMap getWeekList(int year) {   
        LinkedHashMap map = new LinkedHashMap();   
        Calendar c = new GregorianCalendar();   
        c.set(year, Calendar.DECEMBER, 31, 23, 59, 59);   
        int count = getWeekOfYear(c.getTime());   
  
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");   
        String dayOfWeekStart = "";   
        String dayOfWeekEnd = "";   
        for (int i = 1; i <= count; i++) {   
            dayOfWeekStart = sdf.format(getFirstDayOfWeek(year, i));   
            dayOfWeekEnd = sdf.format(getLastDayOfWeek(year, i));   
            map.put(new Integer(i), "第"+i+"周(从"+dayOfWeekStart + "至" + dayOfWeekEnd+")");   
        }   
        return map;   
  
    }   
       
    /**  
     * 得到一年的总周数  
     * @param year  
     * @return  
     */  
    public static int getWeekCountInYear(int year){   
        Calendar c = new GregorianCalendar();   
        c.set(year, Calendar.DECEMBER, 31, 23, 59, 59);   
        int count = getWeekOfYear(c.getTime());   
        return count;   
    }   
  
    /**  
     * 取得当前日期是多少周  
     *   
     * @param date  
     * @return  
     */  
    public static int getWeekOfYear(Date date) {   
        Calendar c = new GregorianCalendar();   
        c.setFirstDayOfWeek(Calendar.MONDAY);   
        c.setMinimalDaysInFirstWeek(7);   
        c.setTime(date);   
  
        return c.get(Calendar.WEEK_OF_YEAR);   
    }   
  
    /**  
     * 得到某年某周的第一天  
     *   
     * @param year  
     * @param week  
     * @return  
     */  
    public static Date getFirstDayOfWeek(int year, int week) {   
        Calendar c = new GregorianCalendar();   
        c.set(Calendar.YEAR, year);   
        c.set(Calendar.MONTH, Calendar.JANUARY);   
        c.set(Calendar.DATE, 1);   
  
        Calendar cal = (GregorianCalendar) c.clone();   
        cal.add(Calendar.DATE, week * 7);   
  
        return getFirstDayOfWeek(cal.getTime());   
    }   
  
    /**  
     * 得到某年某周的最后一天  
     *   
     * @param year  
     * @param week  
     * @return  
     */  
    public static Date getLastDayOfWeek(int year, int week) {   
        Calendar c = new GregorianCalendar();   
        c.set(Calendar.YEAR, year);   
        c.set(Calendar.MONTH, Calendar.JANUARY);   
        c.set(Calendar.DATE, 1);   
  
        Calendar cal = (GregorianCalendar) c.clone();   
        cal.add(Calendar.DATE, week * 7);   
  
        return getLastDayOfWeek(cal.getTime());   
    }   
       
    /**  
     * 得到某年某月的第一天  
     * @param year  
     * @param month  
     * @return  
     */  
    public static Date getFirestDayOfMonth(int year,int month){   
        month = month-1;   
        Calendar   c   =   Calendar.getInstance();      
        c.set(Calendar.YEAR, year);   
        c.set(Calendar.MONTH, month);   
           
        int day = c.getActualMinimum(c.DAY_OF_MONTH);   
  
        c.set(Calendar.DAY_OF_MONTH, day);   
        return c.getTime();   
           
    }   
       
    /**  
     * 提到某年某月的最后一天  
     * @param year  
     * @param month  
     * @return  
     */  
    public static Date getLastDayOfMonth(int year,int month){   
        month = month-1;   
        Calendar   c   =   Calendar.getInstance();      
        c.set(Calendar.YEAR, year);   
        c.set(Calendar.MONTH, month);   
        int day = c.getActualMaximum(c.DAY_OF_MONTH);   
        c.set(Calendar.DAY_OF_MONTH, day);   
        return c.getTime();   
    }   
  
    /**  
     * 取得当前日期所在周的第一天  
     *   
     * @param date  
     * @return  
     */  
    public static Date getFirstDayOfWeek(Date date) {   
        Calendar c = new GregorianCalendar();   
        c.setFirstDayOfWeek(Calendar.MONDAY);   
        c.setTime(date);   
        c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek()); // Monday   
        return c.getTime();   
    }   
  
    /**  
     * 取得当前日期所在周的最后一天  
     *   
     * @param date  
     * @return  
     */  
    public static Date getLastDayOfWeek(Date date) {   
        Calendar c = new GregorianCalendar();   
        c.setFirstDayOfWeek(Calendar.MONDAY);   
        c.setTime(date);   
        c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6); // Sunday   
        return c.getTime();   
    }   
  
}  

 

抱歉!评论已关闭.