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)); } }