java 常用时间操作类,计算到期提醒,N年后,N月后的日期
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; } //获取当前yue public 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)); } }