日期之间相差的天数,月份差,日期月份加一个月 ,取得当月第一天 和最后一天日期,两个不同月之间的总天数,当月总天数

一. 获取当月总天数

public class Test5 {

	public static void main(String[] args) throws ParseException {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		java.util.Date d = sdf.parse("2017-2-04"); 
		System.out.println(getDayOfMonth(d));
	}
	/**
	 * 获取当月总天数
	 * @param d
	 * @return
	 */
	public static int getDayOfMonth(Date d ){
		Calendar aCalendar = Calendar.getInstance(Locale.CHINA);
		aCalendar.setTime(d);
		int day=aCalendar.getActualMaximum(Calendar.DATE);
		return day;
	}
}
二:获取两个不同月之间的总天数    如2017.2.10  (到月底18天)到 218.5.20   (21天) 共计18+21=39天

/**
	 * 获得头尾天数总和  zl
	 * @param startDay
	 * @param endDay
	 * @return
	 */
	public int getdate(Date startDay,Date endDay){
		Calendar calendar = Calendar.getInstance();  
        calendar.setTime(startDay); 
        int day1 = calendar.get(Calendar.DAY_OF_MONTH); //获取当前天数
		int last = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); //获取本月最大天数
		//得到起始月剩余天数
		int sumStart=last-day1+1;
		calendar.setTime(endDay);
		//得到合同终止月剩余天数
		int day2 = calendar.get(Calendar.DAY_OF_MONTH); //获取当前天数
		//获取头加尾的天数
		int sumDay=sumStart+day2;
		return sumDay;
	}


public class Test4 {
	public static void main(String[] args) throws ParseException {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		java.util.Date d = sdf.parse("2015-12-04"); 
		java.util.Date c = sdf.parse("2016-03-16");
		getdate(d,c);
	}
	
	public static void getdate(Date date1,Date date2){

		Calendar calendar = Calendar.getInstance();  
        calendar.setTime(date1); 
        int day = calendar.get(Calendar.DAY_OF_MONTH); //获取当前天数
		int first = calendar.getActualMinimum(Calendar.DAY_OF_MONTH); //获取本月最小天数
		int last = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); //获取本月最大天数
		System.out.println(day+"-----"+first+"------"+last);
		System.out.println("剩余天数:"+(last-day));
		
		calendar.setTime(date2); 
		int day2 = calendar.get(Calendar.DAY_OF_MONTH);
		System.out.println("开始天数"+day2);
	}
}

三.取得当月第一天 和最后一天日期

 /**
	    * 得到本月第一天的日期 
	    * @param date
	    * @return
	    */
	       public Date getFirstDayOfMonth(Date date)   {     
	            Calendar cDay = Calendar.getInstance();     
	           cDay.setTime(date);  
	            cDay.set(Calendar.DAY_OF_MONTH, 1);  
	            return cDay.getTime();     
	       }     
/**
	     *  得到本月最后一天的日期  
	     * @param date
	     * @return
	     */
	       public Date getLastDayOfMonth(Date date)   {     
	           Calendar cDay = Calendar.getInstance();     
	           cDay.setTime(date);  
	           cDay.set(Calendar.DAY_OF_MONTH, cDay.getActualMaximum(Calendar.DAY_OF_MONTH));  
	           return cDay.getTime();     
	      }  
四.日期月份加一个月 

/**
	 * 日期月份加一个月 
	 * @param datetime
	 * @return
	 * @throws ParseException 
	 */
	    public static String dateFormat(String date) throws ParseException {  
	    	 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
		        Date dt = sdf.parse(date);  
		       Calendar rightNow = Calendar.getInstance();  
		       rightNow.setTime(dt);  
		  
		        rightNow.add(Calendar.MONTH, +1);  
		      Date dt1 = rightNow.getTime();  
		        String reStr = sdf.format(dt1);  
		  
		        return reStr;  
	    }  

五.取得两个月之间的月份差

/**
	 * 
	 * @param date1
	 * @param date2
	 * @return获得月份差
	 * @throws ParseException
	 */
	 public int getMonth(Date start, Date end) {
	        if (start.after(end)) {
	            Date t = start;
	            start = end;
	            end = t;
	        }
	        Calendar startCalendar = Calendar.getInstance();
	        startCalendar.setTime(start);
	        Calendar endCalendar = Calendar.getInstance();
	        endCalendar.setTime(end);
	        Calendar temp = Calendar.getInstance();
	        temp.setTime(end);
	        temp.add(Calendar.DATE, 1);

	        int year = endCalendar.get(Calendar.YEAR)
	                - startCalendar.get(Calendar.YEAR);
	        int month = endCalendar.get(Calendar.MONTH)
	                - startCalendar.get(Calendar.MONTH);

	        if ((startCalendar.get(Calendar.DATE) == 1)
	                && (temp.get(Calendar.DATE) == 1)) {
	            return year * 12 + month + 1;
	        } else if ((startCalendar.get(Calendar.DATE) != 1)
	                && (temp.get(Calendar.DATE) == 1)) {
	            return year * 12 + month;
	        } else if ((startCalendar.get(Calendar.DATE) == 1)
	                && (temp.get(Calendar.DATE) != 1)) {
	            return year * 12 + month;
	        } else {
	            return (year * 12 + month - 1) < 0 ? 0 : (year * 12 + month);
	        }
	    }

六.计算两个日期之间相差的天数  

/** 
	 * 计算两个日期之间相差的天数  
	 * @param smdate
	 * @param bdate
	 * @return
	 * @throws ParseException
	 */
	 public static int daysBetween(Date smdate,Date bdate) throws ParseException    
	     {    
	         SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");  
	         smdate=sdf.parse(sdf.format(smdate));  
	         bdate=sdf.parse(sdf.format(bdate));  
	         Calendar cal = Calendar.getInstance();    
	         cal.setTime(smdate);    
	        long time1 = cal.getTimeInMillis();                 
	         cal.setTime(bdate);    
	        long time2 = cal.getTimeInMillis();         
	         long between_days=(time2-time1)/(1000*3600*24);  
	        return Integer.parseInt(String.valueOf(between_days));           
	     }    







  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值