java,php,asp.net,linux,javascript,mysql,mssql,oracle,编程

日期公用处理类

转载请注明:http://www.pmjava.com/Article/ShowInfo.asp?ID=56600
package com.sipgl.eam.utils;

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();
    }

}

posted on 2009-06-10 21:38 rrong_m 阅读(156) 评论(0)  编辑  收藏

<2024年5月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

导航

统计

常用链接

随笔档案

文章分类

文章档案

java编程

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜