java 常用时间操作类,计算到期提醒,N年后,N月后的日期

来源:互联网 发布:5g网络测速 编辑:程序博客网 时间:2024/04/26 20:01
package com.zjjerp.tool;import java.text.ParseException;import java.text.ParsePosition;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;/** *@Author:Demom *@Date:2013-8-2,上午9:22:05 */public class GetDateTimeTools {/*** * 得到yyyy-MM-dd时间格式 * @param date * @return */public static String getYYYYMMDD(Date date){SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");return sdf.format(date);}/*** * 得到yyyy-MM-dd hh:mm:ss时间格式 * @param date * @return */public static String getYYYYMMDDHHMMSS(Date date){SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");return sdf.format(date);}//获取当月的的10号public static String getnowMonthtenday(){Calendar cal = Calendar.getInstance();int month = cal.get(Calendar.MONTH) + 1;int year = cal.get(Calendar.YEAR);StringBuffer sb =new StringBuffer();sb.append(year);sb.append("-");if(month<10){sb.append("0");sb.append(month);}else{sb.append(month);}sb.append("-10");return sb.toString();}//获取当前月的下一个月的10号public static String getnextMonthtenday(){SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");String strDate = sdf.format(new Date());int index = strDate.indexOf(" ");String str1 = strDate.substring(0, index);String[] str2 = str1.split("-");String nextDay="";if(str2[1]!="12"){int Month = Integer.parseInt(str2[1])+1;nextDay=str2[0]+"-"+Month+"-"+"10";}if(str2[1]=="12" || "12".equals(str2[1])){int Month = 1;int Year = Integer.parseInt(str2[0])+1;nextDay = Year+"-"+Month+"-"+"10";}return nextDay;}//获取当前年public static int getCurrentYear(){Calendar cal = Calendar.getInstance();int month = cal.get(Calendar.MONTH) + 1;int year = cal.get(Calendar.YEAR);return year;}//获取当前yuepublic static int getCurrentMonth(){Calendar cal = Calendar.getInstance();int month = cal.get(Calendar.MONTH) + 1;return month;}/** * 以上个月为时间轴,获取上个月的时间 * @param status(0  代表获取月的1号,1代表获取月末) * @return */public static String getLastMonthDay(int status) {         Calendar cal = Calendar.getInstance();         Date date = new Date();         cal.setTime(date);         int year = 0;         int month = cal.get(Calendar.MONTH); // 上个月月份          String newMonth="";       //设置年月          if (month == 0) {             year = cal.get(Calendar.YEAR) - 1;             month = 12;             newMonth=""+month;        } else {         if(month<10){        newMonth="0"+String.valueOf(month);        }else{        newMonth=String.valueOf(month);        }            year = cal.get(Calendar.YEAR);         }         //设置天数          String temp=year + "-" + newMonth.toString();        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");         Date d = null;         try {             d = format.parse(temp);         } catch (ParseException e) {             // TODO Auto-generated catch block              e.printStackTrace();         }         cal.setTime(d);                        int day =cal.getActualMaximum(Calendar.DAY_OF_MONTH);        if(status==1){        String endDay = year + "-" + newMonth + "-" + day;         return endDay;                 }else{        String endDay = year + "-" + newMonth + "-" + "01";         return endDay;         }    } /** * 以上个月为时间轴,获取下个月的时间 * @param status(0  代表获取月的1号,1代表获取月末) * @return */public static String getNextMonthDay(int status) { Calendar cal = Calendar.getInstance();     int day=cal.get(Calendar.DATE);SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");String timestr= sdf.format(new Date());timestr=timestr.substring(0,8);if(status==1){timestr+=String.valueOf(day);}else{timestr+="01";}return timestr;    } /*** * 以上个月为时间轴,获取当月的时间 * @param status(0  代表获取月的1号,1代表获取月末) * @return */public static String getCurrMonthDay(int status) {         Calendar cal = Calendar.getInstance();         Date date = new Date();         cal.setTime(date);         int year = 0;         int month = cal.get(Calendar.MONTH); // 上个月月份          String newMonth="";       //设置年月          if (month == 0) {             year = cal.get(Calendar.YEAR) - 1;             month = 12;             newMonth=""+month;        } else {         if(month<10){        newMonth="0"+String.valueOf(month);        }else{        newMonth=String.valueOf(month);        }            year = cal.get(Calendar.YEAR);         }         //设置天数          String temp=year + "-" + newMonth.toString();        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");         Date d = null;         try {             d = format.parse(temp);         } catch (ParseException e) {             // TODO Auto-generated catch block              e.printStackTrace();         }         cal.setTime(d);         int day =cal.getActualMaximum(Calendar.DAY_OF_MONTH);        if(status==1){        String endDay = year + "-" + newMonth + "-" + day;         return endDay;                 }else{        String endDay = year + "-" + newMonth + "-" + "01";         return endDay;         }}//获取当月5号日前哦public static String getevery5day(){Calendar cal = Calendar.getInstance();int month = cal.get(Calendar.MONTH) + 1;int year = cal.get(Calendar.YEAR);StringBuffer sb =new StringBuffer();sb.append(year);sb.append("-");if(month<=10){sb.append("0");sb.append(month);}else{sb.append(month);}sb.append("-05");return sb.toString();}//合同续约public static String datexuyue(int year){SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");String now = sdf.format(new Date());String[] nowStr = now.split("-");int year1 = Integer.parseInt(nowStr[0])+year;StringBuffer sb = new StringBuffer();sb.append(year1+"-"+nowStr[1]+"-"+nowStr[2]);return sb.toString();}//得到N天后的日期 public static String getBeforeAfterDate(String datestr, int day) {          SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");          java.sql.Date olddate = null;          try {              df.setLenient(false);              olddate = new java.sql.Date(df.parse(datestr).getTime());          } catch (ParseException e) {              throw new RuntimeException("日期转换错误");          }          Calendar cal = new GregorianCalendar();          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 new java.sql.Date(cal.getTimeInMillis()).toString();      }    //根据两个日期A、B计算AB之间的天数public static long getQuot(String time1, String time2){long quot = 0;  SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");  try {   Date date1 = ft.parse( time1 );Date date2 = ft.parse( time2 ); quot = date1.getTime() - date2.getTime(); quot = quot / 1000 / 60 / 60 / 24;  } catch (ParseException e) { e.printStackTrace();}  return quot; }//得到N月后的日期public static   String   GetSysDate(String   format,   String   StrDate,   int   year,   int   month,                   int   day)   {   Calendar   cal   =   Calendar.getInstance();   SimpleDateFormat   sFmt   =   new   SimpleDateFormat(format);   cal.setTime(sFmt.parse(   (StrDate),   new   ParsePosition(0)));   if   (day   !=   0)   {   cal.add(cal.DATE,   day);   }   if   (month   !=   0)   {   cal.add(cal.MONTH,   month);   }   if   (year   !=   0)   {   cal.add(cal.YEAR,   year);   }   return   sFmt.format(cal.getTime());   }       public static void main(String[] args) {       System.out.println(GetSysDate("yyyy-MM-dd",   "2004-01-18",   0,   13,   0));             }  }