| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
jopen
11年前发布

2个比较常用的时间Java工具类

例如取得10天后的日期、当前月所在第几季度等,为此我整理了2个很好用的工具类,代码如下

1.求X天后的日期

import java.text.ParseException;  import java.text.SimpleDateFormat;  import java.util.Calendar;  import java.util.Date;  public class Datetest {     /**    *     * @param datestr 日期字符串    * @param day  相对天数,为正数表示之后,为负数表示之前    * @return 指定日期字符串n天之前或者之后的日期    */   public static String getBeforeAfterDate(String datestr, int day) {    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");    Date olddate = null;    try {     df.setLenient(false);     olddate = new Date(df.parse(datestr).getTime());    } catch (ParseException e) {     throw new RuntimeException("日期转换错误");    }    Calendar cal = Calendar.getInstance();    cal.setTime(olddate);      int Year = cal.get(Calendar.YEAR);    int Month = cal.get(Calendar.MONTH);    int Day = cal.get(Calendar.DAY_OF_MONTH);      int NewDay = Day + day;      cal.set(Calendar.YEAR, Year);    cal.set(Calendar.MONTH, Month);    cal.set(Calendar.DAY_OF_MONTH, NewDay);      return df.format(cal.getTimeInMillis());   }   public static void main(String[] args) {    System.out.println(getBeforeAfterDate("2013-12-29",10)); //获取2013-12-29之后10天的日期     }  }
2.有关季度日期的算法

import java.text.SimpleDateFormat;  import java.util.Calendar;  import java.util.Date;        /**   *   * @author px   * @date 2010-04-26   *   */  public class DateUtils {    // private static final Log logger = LogFactory.getLog(DateUtils.class);     public static final String YYYYMMDD = "yyyy-MM-dd";     public static final String YYYYMMDD_ZH = "yyyy年MM月dd日";     public static final int FIRST_DAY_OF_WEEK = Calendar.MONDAY; //中国周一是一周的第一天     /**    *    * @param strDate    * @return    */   public static Date parseDate(String strDate) {    return parseDate(strDate, null);   }     /**    * parseDate    *    * @param strDate    * @param pattern    * @return    */   public static Date parseDate(String strDate, String pattern) {    Date date = null;    try {     if(pattern == null) {      pattern = YYYYMMDD;     }     SimpleDateFormat format = new SimpleDateFormat(pattern);     date = format.parse(strDate);    } catch (Exception e) {     e.printStackTrace();    }    return date;   }     /**    * format date    *    * @param date    * @return    */   public static String formatDate(Date date) {    return formatDate(date, null);   }     /**    * format date    *    * @param date    * @param pattern    * @return    */   public static String formatDate(Date date, String pattern) {    String strDate = null;    try {     if(pattern == null) {      pattern = YYYYMMDD;     }     SimpleDateFormat format = new SimpleDateFormat(pattern);     strDate = format.format(date);    } catch (Exception e) {     e.printStackTrace();    }    return strDate;   }     /**    * 取得一年的第几周    *    * @param date    * @return    */   public static int getWeekOfYear(Date date){    Calendar c = Calendar.getInstance();    c.setTime(date);    int week_of_year = c.get(Calendar.WEEK_OF_YEAR);    return week_of_year - 1;   }     /**    * getWeekBeginAndEndDate    *    * @param date    * @param pattern    * @return    */   public static String getWeekBeginAndEndDate(Date date, String pattern){    Date monday = getMondayOfWeek(date);    Date sunday = getSundayOfWeek(date);    return formatDate(monday, pattern) + " - " + formatDate(sunday, pattern) ;   }     /**    * 根据日期取得对应周周一日期    *    * @param date    * @return    */   public static Date getMondayOfWeek(Date date) {    Calendar monday = Calendar.getInstance();    monday.setTime(date);    monday.setFirstDayOfWeek(FIRST_DAY_OF_WEEK);    monday.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);    return monday.getTime();   }     /**    * 根据日期取得对应周周日日期    *    * @param date    * @return    */   public static Date getSundayOfWeek(Date date) {    Calendar sunday = Calendar.getInstance();    sunday.setTime(date);    sunday.setFirstDayOfWeek(FIRST_DAY_OF_WEEK);    sunday.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);    return sunday.getTime();   }     /**    * 取得月的剩余天数    *    * @param date    * @return    */   public static int getRemainDayOfMonth(Date date) {    int dayOfMonth = getDayOfMonth(date);    int day = getPassDayOfMonth(date);    return dayOfMonth - day;   }     /**    * 取得月已经过的天数    *    * @param date    * @return    */   public static int getPassDayOfMonth(Date date) {    Calendar c = Calendar.getInstance();    c.setTime(date);    return c.get(Calendar.DAY_OF_MONTH);   }     /**    * 取得月天数    *    * @param date    * @return    */   public static int getDayOfMonth(Date date) {    Calendar c = Calendar.getInstance();    c.setTime(date);    return c.getActualMaximum(Calendar.DAY_OF_MONTH);   }     /**    * 取得月第一天    *    * @param date    * @return    */   public static Date getFirstDateOfMonth(Date date) {    Calendar c = Calendar.getInstance();    c.setTime(date);    c.set(Calendar.DAY_OF_MONTH, c.getActualMinimum(Calendar.DAY_OF_MONTH));    return c.getTime();   }     /**    * 取得月最后一天    *    * @param date    * @return    */   public static Date getLastDateOfMonth(Date date) {    Calendar c = Calendar.getInstance();    c.setTime(date);    c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));    return c.getTime();   }     /**    * 取得季度第一天    *    * @param date    * @return    */   public static Date getFirstDateOfSeason(Date date) {    return getFirstDateOfMonth(getSeasonDate(date)[0]);   }     /**    * 取得季度最后一天    *    * @param date    * @return    */   public static Date getLastDateOfSeason(Date date) {    return getLastDateOfMonth(getSeasonDate(date)[2]);   }     /**    * 取得季度天数    * @param date    * @return    */   public static int getDayOfSeason(Date date) {    int day = 0;    Date[] seasonDates  = getSeasonDate(date);    for (Date date2 : seasonDates) {     day += getDayOfMonth(date2);    }    return day;   }     /**    * 取得季度剩余天数    *    * @param date    * @return    */   public static int getRemainDayOfSeason(Date date) {    return getDayOfSeason(date) - getPassDayOfSeason(date);   }     /**    * 取得季度已过天数    *    * @param date    * @return    */   public static int getPassDayOfSeason(Date date) {    int day = 0;      Date[] seasonDates  = getSeasonDate(date);      Calendar c = Calendar.getInstance();    c.setTime(date);    int month = c.get(Calendar.MONTH); <PRE class=java name="code">                //季度第一个月    if(month == Calendar.JANUARY || month == Calendar.APRIL || month == Calendar.JULY || month == Calendar.OCTOBER) {     day = getPassDayOfMonth(seasonDates[0]);    } else if(month == Calendar.FEBRUARY || month == Calendar.MAY || month == Calendar.AUGUST || month == Calendar.NOVEMBER) {   //季度第二个月     day = getDayOfMonth(seasonDates[0]) + getPassDayOfMonth(seasonDates[1]);    } else if(month == Calendar.MARCH || month == Calendar.JUNE || month == Calendar.SEPTEMBER || month == Calendar.DECEMBER) {  //季度第三个月     day = getDayOfMonth(seasonDates[0]) + getDayOfMonth(seasonDates[1]) + getPassDayOfMonth(seasonDates[2]);    }    return day;   }     /**    * 取得季度月    *    * @param date    * @return    */   public static Date[] getSeasonDate(Date date) {    Date[] season = new Date[3];      Calendar c = Calendar.getInstance();    c.setTime(date);      int nSeason = getSeason(date);    if(nSeason == 1) {//第一季度     c.set(Calendar.MONTH, Calendar.JANUARY);     season[0] = c.getTime();     c.set(Calendar.MONTH, Calendar.FEBRUARY);     season[1] = c.getTime();     c.set(Calendar.MONTH, Calendar.MARCH);     season[2] = c.getTime();    } else if(nSeason == 2) {//第二季度     c.set(Calendar.MONTH, Calendar.APRIL);     season[0] = c.getTime();     c.set(Calendar.MONTH, Calendar.MAY);     season[1] = c.getTime();     c.set(Calendar.MONTH, Calendar.JUNE);     season[2] = c.getTime();    } else if(nSeason == 3) {//第三季度     c.set(Calendar.MONTH, Calendar.JULY);     season[0] = c.getTime();     c.set(Calendar.MONTH, Calendar.AUGUST);     season[1] = c.getTime();     c.set(Calendar.MONTH, Calendar.SEPTEMBER);     season[2] = c.getTime();    } else if(nSeason == 4) {//第四季度     c.set(Calendar.MONTH, Calendar.OCTOBER);     season[0] = c.getTime();     c.set(Calendar.MONTH, Calendar.NOVEMBER);     season[1] = c.getTime();     c.set(Calendar.MONTH, Calendar.DECEMBER);     season[2] = c.getTime();    }    return season;   }     /**    *    * 1 第一季度  2 第二季度 3 第三季度 4 第四季度    *    * @param date    * @return    */   public static int getSeason(Date date) {      int season = 0;      Calendar c = Calendar.getInstance();    c.setTime(date);    int month = c.get(Calendar.MONTH);    switch (month) {     case Calendar.JANUARY:     case Calendar.FEBRUARY:     case Calendar.MARCH:      season =  1;      break;     case Calendar.APRIL:     case Calendar.MAY:     case Calendar.JUNE:      season =  2;      break;     case Calendar.JULY:     case Calendar.AUGUST:     case Calendar.SEPTEMBER:      season =  3;      break;     case Calendar.OCTOBER:     case Calendar.NOVEMBER:     case Calendar.DECEMBER:      season =  4;      break;     default:      break;    }    return season;   }     public static void main(String[] args) {    String strDate = "2010-03-26";    Date date = parseDate(strDate);    System.out.println(strDate + " 是一年的第几周?" + getWeekOfYear(date));    System.out.println(strDate + " 所在周起始结束日期?" + getWeekBeginAndEndDate(date, "yyyy年MM月dd日"));    System.out.println(strDate + " 所在周周一是?" + formatDate(getMondayOfWeek(date)));    System.out.println(strDate + " 所在周周日是?" + formatDate(getSundayOfWeek(date)));      System.out.println(strDate + " 当月第一天日期?" + formatDate(getFirstDateOfMonth(date)));    System.out.println(strDate + " 当月最后一天日期?" + formatDate(getLastDateOfMonth(date)));    System.out.println(strDate + " 当月天数?" + getDayOfMonth(date));    System.out.println(strDate + " 当月已过多少天?" + getPassDayOfMonth(date));    System.out.println(strDate + " 当月剩余多少天?" + getRemainDayOfMonth(date));      System.out.println(strDate + " 所在季度第一天日期?" + formatDate(getFirstDateOfSeason(date)));    System.out.println(strDate + " 所在季度最后一天日期?" + formatDate(getLastDateOfSeason(date)));    System.out.println(strDate + " 所在季度天数?" + getDayOfSeason(date));    System.out.println(strDate + " 所在季度已过多少天?" + getPassDayOfSeason(date));    System.out.println(strDate + " 所在季度剩余多少天?" + getRemainDayOfSeason(date));    System.out.println(strDate + " 是第几季度?" + getSeason(date));    System.out.println(strDate + " 所在季度月份?" + formatDate(getSeasonDate(date)[0], "yyyy年MM月") + "/" + formatDate(getSeasonDate(date)[1], "yyyy年MM月") + "/" + formatDate(getSeasonDate(date)[2], "yyyy年MM月"));   }  }

 本文由用户 jopen 自行上传分享,仅供网友学习交流。所有权归原作者,若您的权利被侵害,请联系管理员。
 转载本站原创文章,请注明出处,并保留原始链接、图片水印。
 本站是一个以用户分享为主的开源技术平台,欢迎各类分享!
 本文地址:https://www.open-open.com/lib/view/open1372256290994.html
Java工具类 Java开发