转.日期公用处理类

原文地址:http://blog.chinaunix.net/u1/59737/showart.php?id=2254658

  • 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, 31235959);  
  •         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, 31235959);  
  •         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();  
  •     }  
  •   
  • }
  • posted @ 2010-07-26 11:55  Rumoon  阅读(83)  评论(0)    收藏  举报