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

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

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

    簡易代碼之家

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      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 閱讀(2915) 評論(6)  編輯  收藏

    Feedback

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

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

    # 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
    這個已經(jīng)解決@dimple
      回復  更多評論
      


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


    網(wǎng)站導航:
     
    主站蜘蛛池模板: 亚洲免费网站在线观看| 青青草97国产精品免费观看| 国产精品成人免费综合| 香蕉免费看一区二区三区| 亚洲精品美女久久久久9999| 四虎亚洲国产成人久久精品| 免费A级毛片无码A∨中文字幕下载| 亚洲人成综合网站7777香蕉| 国产亚洲精品拍拍拍拍拍| 30岁的女人韩剧免费观看| 猫咪免费人成在线网站| 亚洲精品午夜在线观看| 亚洲一区二区高清| 我要看免费的毛片| 免费久久人人爽人人爽av| 亚洲欧美日韩综合俺去了| 亚洲av伊人久久综合密臀性色| 最近中文字幕mv手机免费高清 | 中文字幕无码免费久久9一区9| 亚洲午夜一区二区电影院| 亚洲精品成人网久久久久久| 国产91免费在线观看| 两个人看的www免费| 理论亚洲区美一区二区三区| 亚洲乱码一区av春药高潮| 亚洲乱码无码永久不卡在线 | 久久不见久久见免费影院 | 亚洲成A人片77777国产| 中字幕视频在线永久在线观看免费| 人妻免费一区二区三区最新| 国产精品亚洲专区无码WEB | 一级毛片aaaaaa免费看| 成人a毛片视频免费看| 日本亚洲免费无线码| 亚洲首页在线观看| 亚洲精品国产精品乱码在线观看| 日本免费无遮挡吸乳视频电影| 天天影院成人免费观看| 99久久成人国产精品免费| 色爽黄1000部免费软件下载| 亚洲国产精品嫩草影院|