得到两个日期相差的月数



import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import com.bytter.core.utils.DateUtils;

public class test {

	public static void main(String[] args) {
		int month = 0;
		Date date1;
		Date date2;
		try {
			date1 = new SimpleDateFormat("yyyy-MM-dd").parse("2018-11-1");
			date2 = new SimpleDateFormat("yyyy-MM-dd").parse("2018-11-1");
			month = monthDiffs(date1,date2);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println(month);
	}
	
	public static  int monthDiffs(Date endDate,Date startDate ){
		Calendar end = Calendar.getInstance();
		Calendar start = Calendar.getInstance();
		end.setTime(endDate);
		start.setTime(startDate);
		//相差的月数
	    int month = (end.get(Calendar.MONTH) + ( (end.get(Calendar.YEAR) - start.get(Calendar.YEAR))*12 ) - start.get(Calendar.MONTH));
		//int month = DateUtils.dateDiff('M', end, start);//相差的月数
		int startDays = DateUtils.getDayOfMonth(startDate);//项目开始日期的相应月份共有多少天
		int endDays = DateUtils.getDayOfMonth(endDate);//项目结束日期的相应月份共有多少天
		
		if(startDays== start.get(Calendar.DAY_OF_MONTH)){//开始日期是否是月末的最后一天
			if(endDays == end.get(Calendar.DAY_OF_MONTH)){//结束日期月末最后一天
				month++;
			}else{
				if(end.get(Calendar.DAY_OF_MONTH)>start.get(Calendar.DAY_OF_MONTH)){//结束日期当月天数 > 开始日期单月天数
					month++;
				}
			}
		}else{
			if(endDays==end.get(Calendar.DAY_OF_MONTH)){//结束日期月末最后一天
				month++;
			}else{
				if(end.get(Calendar.DAY_OF_MONTH)>start.get(Calendar.DAY_OF_MONTH)){
					month++;
				}
			}
		}
		return month;
	}	
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值