关闭

java日期计算

标签: 计算两个日期日历java
12613人阅读 评论(0) 收藏 举报
分类:

计算两个日期相差的时间,并使用xx年xx月xx日表示:

/**
		 * 使用Java的日历类来进行计算
		 */
		String strDate1 = "2014-06-14";
		String strDate2 = "2016-07-01";
		
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		Date date1 = format.parse(strDate1);
		Date date2 = format.parse(strDate2);
		
		//比较日期,date2比date1要大
		if(date1.compareTo(date2)<0){
			
			Calendar calendarDate1 = Calendar.getInstance();
			calendarDate1.setTime(date1);
			
			int yearDate1 = calendarDate1.get(Calendar.YEAR);
			int monthDate1 = calendarDate1.get(Calendar.MONTH);
			int dayDate1 = calendarDate1.get(Calendar.DAY_OF_MONTH);
			System.out.println("date1Year:"+yearDate1+",date1Month:"+monthDate1+",date1Day:"+dayDate1);
			
			
			Calendar calendarDate2 = Calendar.getInstance();
			calendarDate2.setTime(date2);
			
			int yearDate2 = calendarDate2.get(Calendar.YEAR);
			int monthDate2 = calendarDate2.get(Calendar.MONTH);
			int dayDate2 = calendarDate2.get(Calendar.DAY_OF_MONTH);
			System.out.println("date1Year:"+yearDate2+",date1Month:"+monthDate2+",date1Day:"+dayDate2);
			
			int distanceYear = 0; //因为年的时候如果是同一年的话返回1
			int distanceMonth = 0;
			
			calendarDate2.add(Calendar.DAY_OF_MONTH,-dayDate1);
			
			int distanceDay = calendarDate2.get(Calendar.DAY_OF_MONTH);
			
			if(calendarDate2.get(Calendar.MONTH)>monthDate1){
				//因为如果日单位超过30天的话会减少一个月,如果减的月大于该日期的最大月时,则会出现月在减一个月
				calendarDate2.add(Calendar.MONTH,-monthDate1);
				distanceMonth = calendarDate2.get(Calendar.MONTH);
			}else{
				distanceMonth = 0;
			}
			
			if(calendarDate2.get(Calendar.YEAR)>yearDate1){
				//如果月超过12月的话,年也会多减1
				calendarDate2.add(Calendar.YEAR,-yearDate1);
				distanceYear = calendarDate2.get(Calendar.YEAR);
			}else{
				distanceYear = 0;
			}
			
			System.out.println(strDate1+"与"+strDate2+"相差:"+distanceYear+"年,"+distanceMonth+"月,"+distanceDay+"日");


计算两个日期相差多少天多少小时多少分:

              String strDate1 = "2016-06-01 10:02:00";
		String strDate2 = "2016-06-02 10:00:00";
		
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date date1 = format.parse(strDate1);
		Date date2 = format.parse(strDate2);
		
		long diff = date2.getTime()-date1.getTime();
		
		long days = diff / (1000 * 60 * 60 * 24);
		
		long hours = (diff - days * (1000 * 60 * 60 * 24)) / (1000 * 60 * 60);

		long minutes = (diff - days * (1000 * 60 * 60 * 24) - hours * (1000 * 60 * 60))
				/ (1000 * 60);
		
		System.out.println(strDate1+"与"+strDate2+"相差:"+days+"天,"+hours+"小时,"+minutes+"分钟");


1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    欢迎关注个人微信号
      欢迎关注微信账号:在路上的coder .每天一篇java相关或互联网相关的文章




    个人资料
    • 访问:782742次
    • 积分:2600
    • 等级:
    • 排名:第14111名
    • 原创:84篇
    • 转载:4篇
    • 译文:0篇
    • 评论:18条
    资源分享地址
    个人博客地址
    博客专栏
    最新评论