Java基礎(chǔ):Java操作日期的工具類總結(jié)

字號(hào):

總結(jié)一些常用到的函數(shù)可以直接在你的應(yīng)用程序中調(diào)用就可以了!方便。我在網(wǎng)上找了些有的用不了。
    /**
    * 以指定的格式來格式化日期
    * @param date Date
    * @param format String
    * @return String
    */
    public String formatDateByFormat(java.util.Date date,String format)
    {
    String result = "";
    if(date != null)
    {
    try
    {
    SimpleDateFormat sdf = new SimpleDateFormat(format);
    result = sdf.format(date);
    }
    catch(Exception ex)
    {
    ex.printStackTrace();
    }
    }
    return result;
    }
    /**
    * 常用的格式化日期
    *
    * @param date Date
    * @return String
    */
    public String formatDate(java.util.Date date)
    {
    return formatDateByFormat(date,"yyyy-MM-dd");
    }
    直接在主方法中調(diào)用這個(gè)方法就可以生成我們所想要的日期格式了哦!方便使用的!
    java.util 類 Calendar好像這個(gè)類的功能相當(dāng)?shù)貜?qiáng)大,我查了一下JDK參考文檔摘錄如下重要信息:
    Calendar 提供了一個(gè)類方法 getInstance,以獲得此類型的一個(gè)通用的對(duì)象。Calendar 的 getInstance 方法返回一個(gè) Calendar 對(duì)象,其日歷字段已由當(dāng)前日期和時(shí)間初始化:
    Calendar rightNow = Calendar.getInstance();//類方法
    可以通過調(diào)用 set 方法來設(shè)置日歷字段值。在需要計(jì)算時(shí)間值(距歷元所經(jīng)過的毫秒)或日歷字段值之前,不會(huì)解釋 Calendar 中的所有字段值設(shè)置。調(diào)用 get、getTimeInMillis、getTime、add 和 roll 涉及此類計(jì)算。
    會(huì)了這個(gè)方法之后的方法如下:
    /**
    * 返回年份
    *
    * @param date
    * 日期
    * @return 返回年份
    */
    public static int getYear(java.util.Date date) {
    java.util.Calendar c = java.util.Calendar.getInstance();
    c.setTime(date);
    return c.get(java.util.Calendar.YEAR);
    }
    賦值一個(gè)java.util.Date對(duì)象給它當(dāng)參數(shù)就可以得到當(dāng)前的年份了。
    /**
    * 返回月份
    *
    * @param date
    * 日期
    * @return 返回月份
    */public static int getMonth(java.util.Date date) {
    java.util.Calendar c = java.util.Calendar.getInstance();
    c.setTime(date);
    return c.get(java.util.Calendar.MONTH) + 1;
    }
    得到1月份為1哦。因?yàn)槲壹恿?哈哈。
    /**
    * 返回日份
    *
    * @param date
    * 日期
    * @return 返回日份
    */
    public static int getDay(java.util.Date date) {
    java.util.Calendar c = java.util.Calendar.getInstance();
    c.setTime(date);
    return c.get(java.util.Calendar.DAY_OF_MONTH);
    }
    可以返回是幾號(hào)出來了哦!
    /**
    * 返回小時(shí)
    *
    * @param date
    * 日期
    * @return 返回小時(shí)
    */
    public static int getHour(java.util.Date date) {
    java.util.Calendar c = java.util.Calendar.getInstance();
    c.setTime(date);
    return c.get(java.util.Calendar.HOUR_OF_DAY);
    }
    /**
    * 返回分鐘
    *
    * @param date
    * 日期
    * @return 返回分鐘
    */
    public static int getMinute(java.util.Date date) {
    java.util.Calendar c = java.util.Calendar.getInstance();
    c.setTime(date);
    return c.get(java.util.Calendar.MINUTE);
    }
    /**
    * 返回秒鐘
    *
    * @param date
    * 日期
    * @return 返回秒鐘
    */
    public static int getSecond(java.util.Date date) {
    java.util.Calendar c = java.util.Calendar.getInstance();
    c.setTime(date);
    return c.get(java.util.Calendar.SECOND);
    }
    DAY_OF_WEEK_IN_MONTH get 和 set 的字段數(shù)字,指示當(dāng)前月中的第幾個(gè)星期。
    可以指定今天是當(dāng)前月的第幾個(gè)星期哦!
    我試了一下今天是當(dāng)前月的第2周哈哈正確!
    DAY_OF_WEEK get 和 set 的字段數(shù)字,指示一個(gè)星期中的某天。
    我相信這個(gè)屬性會(huì)對(duì)我有幫助的哦!
    public static int getDay(java.util.Date date) {
    java.util.Calendar c = java.util.Calendar.getInstance();
    c.setTime(date);
    return c.get(java.util.Calendar.DAY_OF_WEEK);
    }
    我直接調(diào)用這個(gè)方法可以得到今天是周三返回的是4 因?yàn)槭侵苋帐菑?開始的哦!
    OK,我現(xiàn)在想了解一下當(dāng)你輸入:2008年5月第一周是從哪號(hào)到哪號(hào)的
    OK,現(xiàn)在來分析一下當(dāng)用戶輸入2008年5月份第一周是從幾號(hào)到幾號(hào)的問題了!
    第一步:得到今天是哪年哪月哪號(hào)哪周都沒有問題了。
    第二步:確定2008年5月份的一號(hào)是周幾?
    WEEK_OF_YEAR get 和 set 的字段數(shù)字,指示當(dāng)前年中的星期數(shù)。
    可以確定今天是這一年中的第幾周哦哈哈。太強(qiáng)大了這個(gè)類
    Calendar cal = Calendar.getInstance();
    int month=cal.getActualMaximum(Calendar.DAY_OF_MONTH);
    此方法可以得到當(dāng)前月份的天數(shù)哦。非常地好用而且我在潤年與平年的時(shí)候進(jìn)行比較處理了發(fā)現(xiàn)能夠準(zhǔn)確得到天數(shù)哦!
    //獲得周一的日期public static String getMonday(Date date){
    Calendar c = Calendar.getInstance();
    c.setTime(date);
    c.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
    return new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
    }
    這個(gè)方法可以得到當(dāng)前月份的周一的日
    OK!剛剛在網(wǎng)上找了一份非常不錯(cuò)的代碼現(xiàn)在整理如下:
    /**下面的方法可以通過一個(gè)字符串構(gòu)造出來一個(gè)Date類型的數(shù)據(jù)出來!*/
    public static Date strToDateLong(String strDate) {
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
    ParsePosition pos = new ParsePosition(0);
    Date strtodate = formatter.parse(strDate, pos);
    return strtodate;
    }
    /**既然能夠構(gòu)造出來指定日期的時(shí)間變量那現(xiàn)在來分析一下指定某天與當(dāng)天的時(shí)間差吧!*/
    /**
    * 得到二個(gè)日期間的間隔天數(shù)
    */
    public static String getTwoDay(String sj1, String sj2) {
    SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
    long day = 0;
    try {
    java.util.Date date = myFormatter.parse(sj1);
    java.util.Date mydate = myFormatter.parse(sj2);
    day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);
    } catch (Exception e) {
    return "";
    }
    return day + "";
    }
    我在代碼中實(shí)現(xiàn)了可以發(fā)現(xiàn)結(jié)果是正確 的哦!
    而且是能夠判斷出來潤年與否的哦。方便得多了哦!
    OK!
    /**通過這樣子我們可以構(gòu)造出來一個(gè)類似這種字符串類型的時(shí)間出來的哦!*/
    public static Date strToDate(String strDate) {
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
    ParsePosition pos = new ParsePosition(0);
    Date strtodate = formatter.parse(strDate, pos);
    return strtodate;
    }
    /**
    * 獲得一個(gè)日期所在的周的星期幾的日期,如要找出2002年2月3日所在周的星期一是幾號(hào)
    *
    * @param sdate所確定的日期形式2009-01-01
    * @param num要確定的是周幾(1表示周一2表示周二)
    * @return
    */
    public static String getWeek(String sdate, String num) {
    // 再轉(zhuǎn)換為時(shí)間
    Date dd = VeDate.strToDate(sdate);
    Calendar c = Calendar.getInstance();
    c.setTime(dd);
    if (num.equals("1")) // 返回星期一所在的日期
    c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
    else if (num.equals("2")) // 返回星期二所在的日期
    c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
    else if (num.equals("3")) // 返回星期三所在的日期
    c.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);
    else if (num.equals("4")) // 返回星期四所在的日期
    c.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY);
    else if (num.equals("5")) // 返回星期五所在的日期
    c.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
    else if (num.equals("6")) // 返回星期六所在的日期
    c.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
    else if (num.equals("0")) // 返回星期日所在的日期
    c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
    return new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
    }