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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值