精华内容
下载资源
问答
  • 之前在很多竞赛的题目中有这样饿一类题,计算给定两个日期之间的相隔天数,或者很多类似的题目,都是需要转化到这个问题上时,之前用c++写的时候思想是这样的,一个结构体,包括年月日,还有一个计算下一天的函数,...

    【原创】

    之前在很多竞赛的题目中有这样饿一类题,计算给定两个日期之间的相隔天数,或者很多类似的题目,都是需要转化到这个问题上时,之前用c++写的时候思想是这样的,一个结构体,包括年月日,还有一个计算下一天的函数,建立一个整形数组int buf[5001][13][32];看上去很吓人吧,没错就是将5000年全部存下来,存什么呢,比如说让0000-1-1为第一天,那么buf[0000][1][1] = 1;buf[0000][1][2]=2;这样一开始初始化后,便将起全部存储下来,计算两个日期差直接两个数组元素相减便得到结果;

    但是用java可以直接利用内库中的很多封装类来做嘛,这才能体现java的强大嘛

    说多了无聊,直接来代码;

     1 package com.jiajia.filedemo;
     2 
     3 import java.text.ParseException;
     4 import java.text.SimpleDateFormat;
     5 import java.util.Calendar;
     6 import java.util.Date;
     7 
     8 public class Demo3 {
     9     
    10     
    11     private static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    12     
    13     public static void main(String []args) throws Exception{
    14         String first = "1995-9-2";
    15         String second = "2017-3-22";
    16         Date firstdate = format.parse(first);
    17         Date seconddate = format.parse(second);
    18         int cnt = longOfTwoDate(firstdate, seconddate);
    19         System.out.println(cnt);
    20     }
    21     
    22     public static int  longOfTwoDate(Date first,Date second) throws ParseException{
    23                 Calendar calendar = Calendar.getInstance();
    24                 calendar.setTime(first);
    25                 int cnt = 0;
    26                 while(calendar.getTime().compareTo(second)!=0){
    27                     calendar.add(Calendar.DATE, 1);
    28                     cnt++;
    29                 }
    30                 return cnt;
    31     }
    32 }

    没有写注释,代码很简单啊,主要是

    longOfTwoDate函数搞懂就好了,利用到了Calender这个类;有一个自加功能;所以so easy

    转载于:https://www.cnblogs.com/numen-fan/p/6600530.html

    展开全文
  • 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 *...

      

     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      * @param args
    11      * @throws ParseException 
    12      */
    13     public static void main(String[] args) throws ParseException {
    14         // TODO Auto-generated method stub
    15         SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    16         Date d1=sdf.parse("2012-09-08 10:10:10");
    17         Date d2=sdf.parse("2012-09-15 00:00:00");
    18         System.out.println(daysBetween(d1,d2));
    19 
    20         System.out.println(daysBetween("2012-09-08 10:10:10","2012-09-15 00:00:00"));
    21     }
    22     
    23     /** 
    24      * 计算两个日期之间相差的天数 
    25      * @param smdate 较小的时间
    26      * @param bdate  较大的时间
    27      * @return 相差天数
    28      * @throws ParseException 
    29      */  
    30     public static int daysBetween(Date smdate,Date bdate) throws ParseException  
    31     {  
    32         SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
    33         smdate=sdf.parse(sdf.format(smdate));
    34         bdate=sdf.parse(sdf.format(bdate));
    35         Calendar cal = Calendar.getInstance();  
    36         cal.setTime(smdate);  
    37         long time1 = cal.getTimeInMillis();               
    38         cal.setTime(bdate);  
    39         long time2 = cal.getTimeInMillis();       
    40         long between_days=(time2-time1)/(1000*3600*24);
    41           
    42        return Integer.parseInt(String.valueOf(between_days));         
    43     }  
    44     
    45 /**
    46 *字符串的日期格式的计算
    47 */
    48     public static int daysBetween(String smdate,String bdate) throws ParseException{
    49         SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
    50         Calendar cal = Calendar.getInstance();  
    51         cal.setTime(sdf.parse(smdate));  
    52         long time1 = cal.getTimeInMillis();               
    53         cal.setTime(sdf.parse(bdate));  
    54         long time2 = cal.getTimeInMillis();       
    55         long between_days=(time2-time1)/(1000*3600*24);
    56           
    57        return Integer.parseInt(String.valueOf(between_days));   
    58     }
    59 
    60 }

     

    转载于:https://www.cnblogs.com/zzzzw/p/4878854.html

    展开全文
  • 大家看到文章标题"两个日期之间相差天数和相隔天数",是否有疑惑呢!从中文字面理解,”相差“和"相隔"是有区别,然而就是这些区别害死很多人,却没有发现,在大量新增统计时是差之毫厘谬以千里,我能都发现是因为...

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

    两个日期之间相差天数

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

    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。

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

    相隔天数的代码如下:

    3dac700462e3a0a1ce34696a93411625.png

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

    4ff9db964883629c54f53b0b4b8baceb.png

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

    展开全文
  • * 计算两个日期之间相隔的天数 * * @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;
    	}
    }
    
    
    展开全文
  • 大家看到文章标题"两个日期之间相差天数和相隔天数",是否有疑惑呢!从中文字面理解,”相差“和"相隔"是有区别,然而就是这些区别害死很多人,却没有发现,在大量新增统计时是差之毫厘谬以千里,我能都发现是因为...
  • (3)如何求得两个已知日期之间的相隔天数。     对于(1)日历月份前的空格数可以通过计算1900年1月1日至该月1月的总天数,然后对7求余得到;对于(2)可以通过求得对应日期至2020年02月02日...
  • 编写一个java程序ex09 功能:用户从键盘输入两个日期(都包括年月日),程序计算两个日期之间相隔的天数,并输出。
  • import java.time.LocalDate; import java.time.format.DateTimeFormatter;... * 计算两个日期之间的天数 * * @author 枫茗丿love * */ public class CountDaysUtils { private static final int[]
  • 输入两个日期,使用Calendar来表示时间,并计算两个日期之间相隔的天数 输入输出说明: 输入: 2017 4 13 2017 4 15 输出: 2 import java.util.Calendar; import java.util.Scanner; public class ...
  • 在学习了Java中的Date类相关的方法之后,我试着自己写了小程序可以计算任意两天之间相隔天数,挺好用的。 设计思路: 运用Date类中提供的getTime()方法,获取输入的日期与1990-01-01 之间的毫秒差 将获取到的两个...
  • 迂回战术:获取两个日期之间的天数。除以7等于相隔多少周。 参考链接:https://blog.csdn.net/kevin_mails/article/details/78440696 package com.test; import java.time.LocalDate; import java.time.Month; ...
  • /** * 计算出任意两个日期之间相隔的天数 */import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;import java.util.Scanner; public class CaculateDay { publi
  • 计算两个日期之间的天数 思路: 首先要有一个判断平年还是闰年的方法 每个月的天数不同,所以可以分别定义两个数组存储不同月份的天数 定义一个方法计算起始日期是这一年的第几天 计算结束日期是这一年的第...
  • 用当前时间初始化日历时间,计算62616964757a686964616fe4b893e5b19e31333337616634两个日期之间相隔的天数,实例演示了2014年10月1日和1949年10月1日中间相隔的天数计算方法如下:importjava.util.*;...
  • 二、参考资料 1.java 判断两个时间相差天数 2.java计算两个日期之间相差天数和相隔天数详解
  • 求大神帮我看看 这个该怎么写啊,最好有个代码让我学习一下。。。 编写日期类Date,要求如下: ...1)成员变量:year,month,day,类型...4) 编写计算闰年任意两个日期对象之间相隔天数的方法int interval(Date d)
  • 本文讲述了一名开发者为 ...帖子内容如下: 和大家一样,在计算两个日期之间的相隔天数时,Peter 也发现了关于周数的描述明显是错误的,如此大的数值看起来应该是上溢或者下溢之类的问题,要不就是差一错误(off-by-o...
  • 在程序中我们经常会将某一个时间戳存储到数据库,或者将数据库中的时间戳取出格式化成某种显示格式,或者是计算两个日期之间的相隔天数……下面小编就将最近整理的关于日期格式化小插曲分享给大家;  小编经常用到...
  • 1. 计算两之间相隔几天的Java函数/*** 计算两之间相差几天* @param startTime* @param endTime* @return** 取得两个时间段时间间隔* return t2 与t1间隔天数* throws ParseException 如果输入的日期格式不是...
  • 第一次编程题目: 1、输入两个值,然后交换这两个值,并输出 2、求 1!+2!+...+7!值 3、输入一个五位数,计算这个五位数各位之...8.输入两个日期,求日期之间相隔天数。 里面均为.java文件和.java编译过.class文件。
  • Java对时间操作一些封装函数

    千次阅读 2010-08-24 20:05:00
    1. 计算两之间相隔几天的Java函数 /** * 计算两之间相差几天 * @param startTime * @param endTime * @return * * 取得两个时间段时间间隔 * return t2 与t1间隔天数 * throws...
  • 时间日期问题

    千次阅读 2017-02-11 14:36:18
    package programT6_2;import java.text.SimpleDateFormat;... * 给出两个日期计算它们之间相隔的天数。 * 将当前日期信息以4位年份、月份全称、两位日期形式输出。 * @author Administrator *
  • System.out.println("给你一1至100之间的整数,请猜测这数"); int realNumber=(int)(Math.random()*100)+1; int yourGuess=0; String str=JOptionPane.showInputDialog("输入您的猜测:"); yourGuess=...

空空如也

空空如也

1 2
收藏数 29
精华内容 11
关键字:

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

java 订阅