<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    簡易代碼之家

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      157 Posts :: 2 Stories :: 57 Comments :: 0 Trackbacks
        下面的DateUtil類為筆者在以前項目中用到的對日期處理的公用方法,請看到這個類的有興趣的讀者測試,如有BUG請留言,筆者也會在以后的項目中積累完善并更新到此類中去。

      1import java.text.SimpleDateFormat;
      2import java.util.Calendar;
      3import java.util.Date;
      4import java.util.GregorianCalendar;
      5
      6/**
      7 * 
      8 * @author zzk
      9 *
     10 */

     11public class DateUtil {
     12
     13    /**
     14     * 取得某天相加(減)後的那一天
     15     * 
     16     * @param date
     17     * @param num(可正可負)
     18     * @return
     19     */

     20    public static Date getAnotherDate(Date date, int num) {
     21        Calendar c = Calendar.getInstance();
     22        c.setTime(date);
     23        c.add(Calendar.DAY_OF_YEAR, num);
     24        return c.getTime();
     25    }

     26
     27    /**
     28     * 取得某月的的最后一天
     29     * 
     30     * @param year
     31     * @param month
     32     * @return
     33     */

     34    public static Date getLastDayOfMonth(int year, int month) {
     35        Calendar cal = Calendar.getInstance();
     36        cal.set(Calendar.YEAR, year);// 年
     37        cal.set(Calendar.MONTH, month - 1);// 月,因為Calendar里的月是從0開始,所以要減1
     38        cal.set(Calendar.DATE, 1);// 日,設為一號
     39        cal.add(Calendar.MONTH, 1);// 月份加一,得到下個月的一號
     40        cal.add(Calendar.DATE, -1);// 下一個月減一為本月最后一天
     41        return cal.getTime();// 獲得月末是幾號
     42    }

     43
     44    /**
     45     * 取得某天是一年中的多少周
     46     * 
     47     * @param date
     48     * @return
     49     */

     50    public static int getWeekOfYear(Date date) {
     51        Calendar c = new GregorianCalendar();
     52        c.setFirstDayOfWeek(Calendar.MONDAY);
     53        c.setMinimalDaysInFirstWeek(7);
     54        c.setTime(date);
     55        return c.get(Calendar.WEEK_OF_YEAR);
     56    }

     57
     58    /**
     59     * 取得某天所在周的第一天
     60     * 
     61     * @param date
     62     * @return
     63     */

     64    public static Date getFirstDayOfWeek(Date date) {
     65        Calendar c = new GregorianCalendar();
     66        c.setFirstDayOfWeek(Calendar.MONDAY);
     67        c.setTime(date);
     68        c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek());
     69        return c.getTime();
     70    }

     71
     72    /**
     73     * 取得某天所在周的最后一天
     74     * 
     75     * @param date
     76     * @return
     77     */

     78    public static Date getLastDayOfWeek(Date date) {
     79        Calendar c = new GregorianCalendar();
     80        c.setFirstDayOfWeek(Calendar.MONDAY);
     81        c.setTime(date);
     82        c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6);
     83        return c.getTime();
     84    }

     85
     86    /**
     87     * 取得某一年共有多少周
     88     * 
     89     * @param year
     90     * @return
     91     */

     92    public static int getMaxWeekNumOfYear(int year) {
     93        Calendar c = new GregorianCalendar();
     94        c.set(year, Calendar.DECEMBER, 31235959);
     95        return getWeekOfYear(c.getTime());
     96    }

     97    
     98    /**
     99     * 取得某年某周的第一天
    100     * 對于交叉:2008-12-29到2009-01-04屬于2008年的最后一周,2009-01-05為2009年第一周的第一天
    101     * @param year
    102     * @param week
    103     * @return
    104     */

    105    public static Date getFirstDayOfWeek(int year, int week) {
    106        Calendar calFirst = Calendar.getInstance();
    107        calFirst.set(year, 07);
    108        Date firstDate = getFirstDayOfWeek(calFirst.getTime());
    109
    110        Calendar firstDateCal = Calendar.getInstance();
    111        firstDateCal.setTime(firstDate);
    112
    113        Calendar c = new GregorianCalendar();
    114        c.set(Calendar.YEAR, year);
    115        c.set(Calendar.MONTH, Calendar.JANUARY);
    116        c.set(Calendar.DATE, firstDateCal.get(Calendar.DATE));
    117
    118        Calendar cal = (GregorianCalendar) c.clone();
    119        cal.add(Calendar.DATE, (week - 1* 7);
    120        firstDate = getFirstDayOfWeek(cal.getTime());
    121
    122        return firstDate;
    123    }

    124
    125    /**
    126     * 取得某年某周的最后一天
    127     * 對于交叉:2008-12-29到2009-01-04屬于2008年的最后一周,2009-01-04為2008年最后一周的最后一天
    128     * @param year
    129     * @param week
    130     * @return
    131     */

    132    public static Date getLastDayOfWeek(int year, int week) {
    133        Calendar calLast = Calendar.getInstance();
    134        calLast.set(year, 07);
    135        Date firstDate = getLastDayOfWeek(calLast.getTime());
    136
    137        Calendar firstDateCal = Calendar.getInstance();
    138        firstDateCal.setTime(firstDate);
    139
    140        Calendar c = new GregorianCalendar();
    141        c.set(Calendar.YEAR, year);
    142        c.set(Calendar.MONTH, Calendar.JANUARY);
    143        c.set(Calendar.DATE, firstDateCal.get(Calendar.DATE));
    144
    145        Calendar cal = (GregorianCalendar) c.clone();
    146        cal.add(Calendar.DATE, (week - 1* 7);
    147        Date lastDate = getLastDayOfWeek(cal.getTime());
    148        
    149        return lastDate;
    150    }

    151}

    152
    posted on 2008-01-08 18:49 Jakin.zhou 閱讀(2921) 評論(6)  編輯  收藏

    Feedback

    # re: Java中對日期的常用處理 2008-01-08 22:01 xidudui
    太贊了  回復  更多評論
      

    # re: Java中對日期的常用處理[未登錄] 2008-01-08 23:23 Crying
    好貼 轉啦
      回復  更多評論
      

    # re: Java中對日期的常用處理 2008-01-09 09:23 隔葉黃鶯
    不錯,我這里只說 取某年某月最后一天的寫法,用下面的方式會好理解來,省得加加減減的
    public static Date getLastDayOfMonth(int year, int month) {
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.YEAR, year);// 年
    cal.set(Calendar.MONTH, month - 1);// 月,因為Calendar里的月是從0開始,所以要減1
    //設置該月實際的最后一天
    cal.set(Calendar.DATE,cal.getActualMaximum(Calendar.DATE));
    return cal.getTime();// 獲得月末是幾號
    }

    其他方法中看是否可以應用的上
    getActualMaximum(int field)
    getActualMinimum(int field)
    這兩個方法  回復  更多評論
      

    # re: Java中對日期的常用處理 2008-01-14 12:02 Jakin.zhou
    謝謝樓上朋友,這個方法確實不錯。  回復  更多評論
      

    # re: Java中對日期的常用處理[未登錄] 2008-11-21 08:49 dimple
    請問取出某月的三個月后是什么月份,
    某月的六個月后是幾月怎么取啊? 謝謝!  回復  更多評論
      

    # re: Java中對日期的常用處理[未登錄] 2008-11-25 16:04 dimple
    這個已經解決@dimple
      回復  更多評論
      


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲一级毛片免费看| 成人免费ā片在线观看| 亚洲 小说区 图片区 都市| 国产精品永久免费视频| 亚洲情a成黄在线观看动漫尤物| 欧洲精品成人免费视频在线观看| 男人免费视频一区二区在线观看| 日本亚洲欧洲免费天堂午夜看片女人员| 67194国产精品免费观看| mm1313亚洲国产精品无码试看| 人人鲁免费播放视频人人香蕉| 大香人蕉免费视频75| 久久久久国色AV免费观看| 国产精品亚洲四区在线观看| 国产成人精品久久亚洲高清不卡 | 91免费国产自产地址入| 深夜福利在线视频免费| 亚洲午夜精品一区二区公牛电影院 | 国产一级大片免费看| 免费无码毛片一区二区APP| 日本亚洲视频在线 | 全免费a级毛片免费**视频| 免费网站观看WWW在线观看| 亚洲日韩精品国产3区| 久久久久亚洲AV片无码| 免费a级毛片18以上观看精品| 麻豆高清免费国产一区| 久久一区二区免费播放| 亚洲中文字幕无码久久| 亚洲成人动漫在线| 亚洲精品视频在线看| 国产精品成人免费一区二区| 国产一区二区免费视频| 一级黄色片免费观看| 亚洲av日韩综合一区久热| 亚洲成无码人在线观看| 亚洲成在人线av| 午夜国产大片免费观看| 国外成人免费高清激情视频| h片在线免费观看| 久久成人免费播放网站|