Java 日期工具类

jopen 10年前

import java.text.ParseException;  import java.text.SimpleDateFormat;  import java.util.Calendar;  import java.util.Date;    /**   * 时间处理工具类 <br>   *    * @author Davint   * @since 5.0   * @version 1.0   */  public class TimerUtil {     private SimpleDateFormat sp = new SimpleDateFormat("yyyy-MM-dd");   private static TimerUtil cc = new TimerUtil();     public static TimerUtil getInstance() {    return cc;   }     public static void main(String[] args) {    TimerUtil timer=TimerUtil.getInstance();    System.out.println(timer.getDaysByDate(timer.getDate("2012-04-01", "yyyy-MM-dd")));       }      //根据日期得到当月天数   public int getDaysByDate(Date date) {    Calendar ca=Calendar.getInstance();    ca.setTime(date);    int year=ca.get(Calendar.YEAR);    int month=ca.get(Calendar.MONDAY)+1;    int day=0;    if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {     if (month==2) {      day=29;     }    }else {     if (month==2) {      day=28;     }     }        if (month==4||month==6||month==9||month==11) {     day=30;    }        if (month==1||month==3||month==5||month==7||month==8||month==10||month==12) {     day=31;    }    return day;   }        /**    * 上周一的日期    * 将周一作为一周的第一天    */   public Date getLastWeekFirstDay() {    Calendar ca = Calendar.getInstance();    if (ca.get(Calendar.DAY_OF_WEEK)-1==0) {     ca.add(Calendar.DATE, -1 * 7*2);     ca.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);     return ca.getTime();    }    ca.add(Calendar.DATE, -1 * 7);    ca.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);    return ca.getTime();   }     // 本周一日期   public Date getThisWeekFirstDay() {    Calendar ca=Calendar.getInstance();    if (ca.get(Calendar.DAY_OF_WEEK)-1==0) {     ca.add(Calendar.DATE, -1);     ca.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);     return ca.getTime();    }    ca.add(Calendar.DATE, 0);    ca.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);    return ca.getTime();   }      //两个月前的第一天   public Date getLast2MonFirstDay() {    Calendar cal=Calendar.getInstance();    Date now=new Date();    cal.setTime(now);    cal.add(Calendar.MONTH, -1);    int year=cal.get(Calendar.YEAR);    int month=cal.get(Calendar.MONTH);    String resultTime=year+"-"+month+"-01";    Date date =null;    try {     date=sp.parse(resultTime);    } catch (ParseException e) {     e.printStackTrace();    }    return date;   }      // 上个月第一天日期   public Date getLastMonFirstDay() {    Calendar cal=Calendar.getInstance();    Date now=new Date();    cal.setTime(now);    int year=cal.get(Calendar.YEAR);    int month=cal.get(Calendar.MONTH);    String resultTime=year+"-"+month+"-01";    Date date =null;    try {     date=sp.parse(resultTime);    } catch (ParseException e) {     e.printStackTrace();    }    return date;   }     // 本月第一天   public Date getThisMonFirstDay() {    Calendar cal = Calendar.getInstance();    int year = cal.get(Calendar.YEAR);    int month = cal.get(Calendar.MONTH) + 2;    cal.set(Calendar.DAY_OF_MONTH, 1);    cal.add(Calendar.DAY_OF_MONTH, -1);    int day = cal.get(Calendar.DAY_OF_MONTH);    String months = "";    String days = "";    if (month > 1) {     month--;    } else {     year--;     month = 12;    }    if (!(String.valueOf(month).length() > 1)) {     months = "0" + month;    } else {     months = String.valueOf(month);    }    if (!(String.valueOf(day).length() > 1)) {     days = "0" + day;    } else {     days = String.valueOf(day);    }    String firstDay = "" + year + "-" + months + "-01";    String[] lastMonth = new String[2];    lastMonth[0] = firstDay;    try {     return sp.parse(firstDay);    } catch (ParseException e) {    }    return null;   }      // 昨天日期   public String getYesterday() {    Date today = new Date();    Calendar ca = Calendar.getInstance();    ca.setTime(today);    ca.add(Calendar.DAY_OF_YEAR, -1);    return sp.format(ca.getTime());   }     // 7天前日期   public String getSevenDayAgo() {    Date today = new Date();    Calendar ca = Calendar.getInstance();    ca.setTime(today);    ca.add(Calendar.DAY_OF_YEAR, -7);    return sp.format(ca.getTime());   }     // 3天前日期   public String getThreeDayAgo() {    Date today = new Date();    Calendar ca = Calendar.getInstance();    ca.setTime(today);    ca.add(Calendar.DAY_OF_YEAR, -3);    return sp.format(ca.getTime());   }     // 一月前日期   public String getOneMonthAgo() {    Calendar cal = Calendar.getInstance();    cal.add(Calendar.MONTH, -1); // 得到前一个月    long date = cal.getTimeInMillis();    Date kk = new Date(date);    return sp.format(kk);   }     // 3月前日期   public String getThreeMonthAgo() {    Calendar cal = Calendar.getInstance();    cal.add(Calendar.MONTH, -3);    long date = cal.getTimeInMillis();    Date kk = new Date(date);    return sp.format(kk);   }     /**    * getDate<br>    * 格式:yyyy-MM-dd 00:00:00 eg.2013-08-19 00:00:00<br>    * @param type -1表示昨天;-2表示前天;以此类推-N表示前N天    * @return java.util.Date    */   public Date getDate(int type) {    Date resultDate = null;    Date today = new Date();    Calendar ca = Calendar.getInstance();    ca.setTime(today);    ca.add(Calendar.DAY_OF_YEAR, type);    // 将时间转换成00:00:00    try {     resultDate = sp.parse(sp.format(ca.getTime()));     return resultDate;    } catch (ParseException e) {     e.printStackTrace();    }    return resultDate;   }     /**    * N天前的具体时间    *     * @param n  0 表示今天,-1代表昨天    * @param type yyyyMMddHHmmss、yyyy-MM-dd HH:mm:ss    * @return    */   public String getSomeDaysAgoString(int n, String type) {    Date today = new Date();    SimpleDateFormat sp = new SimpleDateFormat();    sp.applyPattern(type);    Calendar ca = Calendar.getInstance();    ca.setTime(today);    ca.add(Calendar.DAY_OF_YEAR, n);    return sp.format(ca.getTime());   }     /**    * N天前的具体时间    *     * @param n 0 表示今天,-1代表昨天    * @return    */   public Date getSomeDaysAgoDate(int n) {    Date today = new Date();    Calendar ca = Calendar.getInstance();    ca.setTime(today);    ca.add(Calendar.DAY_OF_YEAR, n);    return ca.getTime();   }     /**    * 格式化某一时间    *     * @param date    * @param type    * @return    */   public String getString(Date date, String type) {    SimpleDateFormat sp = new SimpleDateFormat();    sp.applyPattern(type);    if (date != null && type != null) {     return sp.format(date);    }    return "时间格式化异常!";   }     /**    * 格式化某一时间字符串    *     * @param date    * @param type    * @return    */   public Date getDate(String date, String type) {    SimpleDateFormat sp = new SimpleDateFormat();    sp.applyPattern(type);    try {     if (date != null && type != null) {      return sp.parse(date);     }     return null;    } catch (ParseException e) {     e.printStackTrace();    }    return null;   }      /**    * 某日期前、后N天的日期    * @param date 某一日期    * @param type N天 0表示当天,N或+N表示后N天的日期,-N表示前N天的日期    * @return java.util.Date    */   public Date getDate(Date date,int type) {    Calendar cal=Calendar.getInstance();    cal.setTime(date);    cal.add(Calendar.DAY_OF_YEAR, type);    return cal.getTime();   }    }