精华内容
下载资源
问答
  • * 计算两个日期之间相隔天数 * * @author zql * */ public class Test { public static void main(String[] args) { Test t = new Test(); int r = t.getDaySub(2020, 1, 1, 2020, 2, 5); System....
    /**
     * 计算两个日期之间相隔的天数
     * 
     * @author zql
     *
     */
     
    public class Test {
    
    	public static void main(String[] args) {
    		Test t = new Test();
    		int r = t.getDaySub(2020, 1, 1, 2020, 2, 5);
    		System.out.println(r);
    	}
    
    	/**
    	 * @param startYear 开始年
    	 * @param startMonth 开始月
    	 * @param startDay 开始日
    	 * @param endYear 结束年
    	 * @param endMonth 结束月
    	 * @param endDay 结束日
    	 * @return 相隔的天数
    	 */
    	public int getDaySub(int startYear, int startMonth, int startDay, int endYear, int endMonth, int endDay) {
    		// 总天数
    		int totalDay = 0;
    		// 年相等
    		if (startYear == endYear) {
    			// 月相等
    			if (startMonth == endMonth) {
    				totalDay = endDay - startDay;
    				// 月不等
    			} else {
    				for (int i = 0; i <= (endMonth - startMonth); i++) {
    					// 第一个月可能不是从1号开始,所以另算
    					if (i == 0) {
    						totalDay += (getThisYearMonthDays(startYear, startMonth) - startDay);
    						// 最后一个月可能不是从月底结束结束,所以另算
    					} else if (i == (endMonth - startMonth)) {
    						totalDay += endDay;
    					} else {
    						totalDay += getThisYearMonthDays(startYear, startMonth + i);
    					}
    				}
    			}
    			// 年不相等
    		} else {
    			for (int i = 0; i <= (endYear - startYear); i++) {
    				// 第一年
    				if (i == 0) {
    					for (int j = startMonth; j < 13; j++) {
    						int month = j;
    						int days = getThisYearMonthDays(startYear, month);
    						// 第一年的开始月份
    						if (j == startMonth) {
    							days = getThisYearMonthDays(startYear, month) - startDay;
    						}
    						totalDay += days;
    					}
    					// 最后一年
    				} else if (i == (endYear - startYear)) {
    					for (int j = 1; j <= endMonth; j++) {
    						int month = j;
    						int eDay = getThisYearMonthDays(endYear, month);
    						// 结束日期的最后一天小于最后一月的天数
    						if (j == endMonth && endDay < eDay) {
    							eDay = endDay;
    						}
    						totalDay += eDay;
    					}
    					// 中间年
    				} else {
    					int year = startYear + i;
    					if (isLeapYear(year)) {
    						totalDay += 366;
    					} else {
    						totalDay += 365;
    					}
    				}
    			}
    		}
    		return totalDay;
    	}
    
    	/**
    	 * 获取某年某月的天数
    	 * 
    	 * @param year 年份
    	 * @param month 月份
    	 * @return int类型,天数
    	 */
    	public int getThisYearMonthDays(int year, int month) {
    		if (month == 2) {
    			return isLeapYear(year) ? 29 : 28;
    		} else if (month == 4 || month == 6 || month == 9 || month == 11) {
    			return 30;
    		} else {
    			return 31;
    		}
    	}
    
    	/**
    	 * 判断是否是闰年,是返回true,不是返回false
    	 * 
    	 * @param year 年份
    	 * @return boolean 类型
    	 */
    	public boolean isLeapYear(int year) {
    		return (year % 4 == 0) && (year % 100 != 0) || (year % 400 == 0) ? true : false;
    	}
    }
    
    
    展开全文
  • 给大家分享了Java计算两个日期时间之间天数最简单的实现方法,有兴趣的朋友可以参考学习下。
  • java计算两个日期之间相差天数和相隔天数详解

    万次阅读 多人点赞 2015-05-29 15:39:59
    大家看到文章标题"两个日期之间相差天数和相隔天数",是否有疑惑呢!从中文字面理解,”相差“和"相隔"是有区别的,然而就是这些区别害死很多人,却没有发现,在大量新增统计时是差之毫厘谬以千里,我能都发现是因为...

            大家看到文章标题"两个日期之间相差天数和相隔天数",是否有疑惑呢!从中文字面理解,”相差“和"相隔"是有区别的,然而就是这些区别害死很多人,却没有发现,在大量新增统计时是差之毫厘谬以千里,我能都发现是因为一个偶然的机会,一个项目运行几年却没有人发现,我在其中还不到一年,一开始写这些这代码的人根本没分清楚什么情况就写了,怪不得统计的数据总是有那么细微的差别,在于日期”相差“和"相隔"有某些特定的情况下是相等的,有时又不相等。大家看我写那么多也是醉了。下面直接进入正题。


    • 两个日期之间相差天数

        平时大家都在讨论两个日期之间相差天数,网上大把代码也是关于两个日期之间相差天数,因为相差在人的脑中已经根深了,在我管理的工程里也有这样的代码,如下所示

    public static int getDiscrepantDays(Date dateStart, Date dateEnd) {
    		return (int) ((dateEnd.getTime() - dateStart.getTime()) / 1000 / 60 / 60 / 24);
    	}

    这个方法的功能就是传入开始和结束日期,计算相差的天数,实现思路是通过java.util.Date类的getTime()方法获得日期的毫秒数,

    然后相减dateEnd.getTime() - dateStart.getTime(),得到毫秒数的差,除以1000,得到秒数的差;再除以60,得到分钟数的差;再除以60,得到小时数的差;再除以24小时,得到天数的差。这就是计算两个日期之间相差天数的思路。网上大部分代码都和这个大同小异,下面重点解决下两个日期之间相隔天数。


    • 两个日期之间相隔天数

    相隔并不是相差,只要是同一天,相隔就是0,不是同一天,相隔就不是0,但对于两日期相差的天数就不一样,不是同一天,相差天数也可以为0.

    相差天数例子,

    开始日期为:2015-05-28 23:59:59,结束日期为:2015-05-29 00:00:00,相差为1秒,相差天数为0,

    开始日期为:2015-05-28 11:00:00,结束日期为:2015-05-29 10:59:59,相差天数也为0,差1秒,相差天数为1。

    相隔天数例子,

    开始日期为:2015-05-28 23:59:59,结束日期为:2015-05-29 00:00:00,相差为1秒,相隔天数为1,

    开始日期为:2015-05-28 11:00:00,结束日期为:2015-05-29 10:59:59,相差天数也为0,差1秒,相隔天数还是为1。

    到这里,读者应该知道区别在那里了吧,如果用相差天数的思路求相隔天数必然是错的。


    相隔天数的代码如下:



    相隔天数的代码只要变通下,格式化加上时间,就变成了计算相差天数的代码:



    到这里,计算两个日期之间相差天数和相隔天数实现代码已讲完。如果统计的日志数据生成在不同天的表两种方法得到结果决然不同,对于几百万级表的信息查询,得到的结果相差就非常大了。所有开发时要根据自己的业务慎重选择合适的计算方法。只能说细节决定成败!有用的话希望大家分享分享。









    展开全文
  • 主要介绍了Java判断两个日期相差天数的方法,以实例形式对比分析了java进行日期换算及对比的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • java计算两个日期相隔天数
  • java计算两个日期之间天数 jxts = DateFunction.getNumberOfDays(jxErq, qsjxrq); public static long getNumberOfDays(String psDate1, String psDate2) { psDate1 = psDate1.replace('-', '/'); psDate2 = ...

    java计算两个日期之间天数

    jxts = DateFunction.getNumberOfDays(jxErq, qsjxrq);
    
    public static long getNumberOfDays(String psDate1, String psDate2) {
    		psDate1 = psDate1.replace('-', '/');
    		psDate2 = psDate2.replace('-', '/');
    		try {
    			psDate1 = psDate1.substring(0, 4) + "/" + psDate1.substring(4, 6)
    					+ "/" + psDate1.substring(6, 8);
    
    			psDate2 = psDate2.substring(0, 4) + "/" + psDate2.substring(4, 6)
    					+ "/" + psDate2.substring(6, 8);
    
    			Date dt1 = new Date(psDate1);
    			Date dt2 = new Date(psDate2);
    			long l = dt1.getTime() - dt2.getTime();
    			l = l / 60L / 60L / 1000L / 24L;
    			return Math.abs(l);
    		} catch (Exception e) {
    			System.out.println("exception" + e.toString());
    		}
    		return -1L;
    	}
    }
    
    展开全文
  • java计算两个日期之间相差的天数

    千次阅读 2020-06-28 16:53:22
    * 计算两个日期之间相差的天数 */ public static int daysBetween(Date sendDate, Date startDate) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); try { sendDate = sdf.parse(sdf.format...
    /**
     * 计算两个日期之间相差的天数
     */
    public static int daysBetween(Date sendDate, Date startDate) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        try {
            sendDate = sdf.parse(sdf.format(sendDate));
            startDate = sdf.parse(sdf.format(startDate));
        } catch (Exception e) {
            e.printStackTrace();
        }
        Calendar cal = Calendar.getInstance();
        cal.setTime(sendDate);
        long time1 = cal.getTimeInMillis();
        cal.setTime(startDate);
        long time2 = cal.getTimeInMillis();
        long between_days = (time2 - time1) / (1000 * 3600 * 24);
        return Integer.parseInt(String.valueOf(between_days));
    }
    展开全文
  • java计算两个日期之间相差的天数的四种方法

    万次阅读 多人点赞 2020-09-22 10:44:14
    计算两个日期直线相差的天数的四种方法 第一种:时间戳的方式,计算两个日期的时间戳的差,再除当天的毫秒数即可得到相差的天数。 public static void main(String[] args) { DateFormat dft = new ...
  • 列:2017-08-11 与 2017-08-15 返回 3 列:2017-08-10 与 2017-08-11 返回 0
  • Java 8中,我们可以使用ChronoUnit.DAYS.between(from, to)计算两个日期之间天数。 1. LocalDate JavaBetweenDays1.java package com.mkyong.java8; import java.time.LocalDate; import java.time....
  • 编写一个java程序ex09 功能:用户从键盘输入两个日期(都包括年月日),程序计算两个日期之间相隔天数,并输出。
  • 获取两个日期之间天数: 传入两个日期获取它们之间天数 public static double getDistanceOfTwoDate(Date before, Date after) { long beforeTime = before.getTime(); long afterTime = after.getTime(); ...
  • * 计算两个日期间隔天数 * * @param startTime : 开始时间 * @param endTime : 结束时间 * @param format: 时间格式 * @return */ public static int caculateTotalTime(String startTime, String endTime,...
  • SimpleDateFormat myFormatter = new SimpleDateFormat("yyyyMMdd");... //计算当前时间和发布时间相差几天 long day=(mydate.getTime()-date.getTime())/(24*60*60*1000); //转换为int类型 int days = (int) day;
  • Java计算任意两个日期之间的工作天数.java 工具类
  • 一、计算两个日期相差的天数 public Integer differDays(Date date1, Date date2) throws Exception{ SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); date1=sdf.parse(sdf.format(date1)); date2=sdf...
  • 计算两个日期相隔天数。 代码简单易懂,适合java初学者。
  • * 计算两个日期间隔天数 * * @param startTime : 开始时间 * @param endTime : 结束时间 * @return */ public static int caculateTotalTime(String startTime, String endTime) { Si...
  • 给定两个日期计算相差的天数
  • JAVA-计算两个日期之间相差的天数

    万次阅读 2018-10-10 17:00:49
     * 计算两个日期之间相差的天数  * @param date1  * @param date2  * @return  */  public static int daysBetween(Date date1,Date date2){  Calendar cal = Calendar.getInstance(); ...
  • 两个日期之间相差的天数 利用日期类将用户输入的两个日期字符串转换成为日期格式,用相应日期类操作方法将两个日期之间相差天数计算出来。
  • JAVA计算两个日期相差多少天

    千次阅读 2020-12-31 01:02:02
    前言 有时候我们在JAVA中会比较两个日期相差多少天,这里有几个实现方法供大家参考,偶尔会用到,也当做自己收藏。btw,同时也要鄙视一下我的好基友从百度... * JAVA计算两个日期相差多少天(by date) * @author zhengk
  • public Calculate { public static void main(String[] args){ int days = getBetweenDays(2019,5,20,2020,2... //计算相差天数 public static int getBetweenDays(int fromYear,int fromMonth,int fromDay,int ...
  • java实现计算两个日期相差天数

    千次阅读 2018-11-03 22:41:59
    要求:计算1999年1月1日和2018年11月3日相差多少天 思路: 1、每年的天数累加,需判断闰年、平年 2、每月的天数累加,不同月份天数不同,平年和闰年,2月份... * 计算两个日期之间相差的天数 * 如:计算1999年1月1...
  • 之前在很多竞赛的题目中有这样饿一类题,计算给定两个日期之间相隔天数,或者很多类似的题目,都是需要转化到这个问题上时,之前用c++写的时候思想是这样的,一个结构体,包括年月日,还有一个计算下一天的函数,...
  • import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class test16 { /** * @param args * @throws ParseE...
  • 读入数据总结欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一适合你的列表创建一表格设定内容居中、居左、居右...
  • 1 import java.text.ParseException; 2 import java.text.SimpleDateFormat; 3 import java.util.Calendar; 4 import java.util.Date; 5 6 7 public class date { 8 9 /** 10 *...
  • Java计算 2个日期的间隔天数

    万次阅读 多人点赞 2019-05-10 17:18:40
    废话不多说,贴代码就完了!老铁! /** * 计算时间 * @param startTime : 开始时间 * @param endTime : 结束时间 * @return */ public static int caculateTotalTime(St...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,123
精华内容 849
关键字:

java计算两个日期之间的相隔天数

java 订阅