<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 閱讀(2914) 評論(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
      回復  更多評論
      


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


    網站導航:
     
    主站蜘蛛池模板: 日本一道在线日本一道高清不卡免费| 亚洲免费精彩视频在线观看| 99久久这里只精品国产免费| 91在线免费视频| 久久精品熟女亚洲av麻豆| 亚洲男人的天堂在线| 精品国产_亚洲人成在线高清| 免费大黄网站在线观看| 国产大片线上免费观看| 日韩精品内射视频免费观看| 在线免费视频你懂的| 国产91成人精品亚洲精品| 亚洲日本va一区二区三区| 亚洲精品美女在线观看播放| 亚洲国产成人私人影院| 在线a亚洲v天堂网2019无码| 亚洲AV无码不卡在线观看下载| 四虎在线免费播放| 免费大片黄在线观看yw| 中文字幕免费视频| 中文字幕免费在线| 120秒男女动态视频免费| 日本一卡精品视频免费| 久久久久久久99精品免费 | 亚洲免费中文字幕| 一级毛片免费不卡在线| 国产成人免费视频| 野花香在线视频免费观看大全 | 亚洲国产电影av在线网址| 日本免费中文字幕在线看| 免费无码不卡视频在线观看| 免费A级毛片无码免费视| 国产美女在线精品免费观看| 毛片免费观看网址| 精品国产免费观看一区| 日本一道高清不卡免费| vvvv99日韩精品亚洲| 国产亚洲精品看片在线观看| 亚洲理论电影在线观看| 亚洲第一精品在线视频| 亚洲乱码一区av春药高潮|