`

Java比较两个时间相差多少天,多少个月,多少年

    博客分类:
  • java
阅读更多
 /**  
	      * @param date1 需要比较的时间 不能为空(null),需要正确的日期格式 ,如:2009-09-12 
	      * @param date2 被比较的时间  为空(null)则为当前时间  
	      * @param stype 返回值类型   0为多少天,1为多少个月,2为多少年  
	      * @return  
	      * 举例:
	      * compareDate("2009-09-12", null, 0);//比较天
	      * compareDate("2009-09-12", null, 1);//比较月
	      * compareDate("2009-09-12", null, 2);//比较年
	      */ 
     public static int compareDate(String startDay,String endDay,int stype){  
         int n = 0;  
         String[] u = {"天","月","年"};  
         String formatStyle = stype==1?"yyyy-MM":"yyyy-MM-dd";  
           
         endDay = endDay==null?getCurrentDate("yyyy-MM-dd"):endDay;  
           
         DateFormat df = new SimpleDateFormat(formatStyle);  
         Calendar c1 = Calendar.getInstance();  
         Calendar c2 = Calendar.getInstance();  
         try {  
             c1.setTime(df.parse(startDay));  
             c2.setTime(df.parse(endDay));  
         } catch (Exception e3) {  
             System.out.println("wrong occured");  
         }  
         //List list = new ArrayList();  
         while (!c1.after(c2)) {                   // 循环对比,直到相等,n 就是所要的结果  
             //list.add(df.format(c1.getTime()));    // 这里可以把间隔的日期存到数组中 打印出来  
             n++;  
             if(stype==1){  
                 c1.add(Calendar.MONTH, 1);          // 比较月份,月份+1  
             }  
             else{  
                 c1.add(Calendar.DATE, 1);           // 比较天数,日期+1  
             }  
         }  
         n = n-1;  
         if(stype==2){  
             n = (int)n/365;  
         }     
         System.out.println(startDay+" -- "+endDay+" 相差多少"+u[stype]+":"+n);        
         return n;  
     }   

public static String getCurrentDate(String format){
		Calendar day=Calendar.getInstance(); 
		day.add(Calendar.DATE,0); 
		SimpleDateFormat sdf=new SimpleDateFormat(format);//"yyyy-MM-dd"
		String date = sdf.format(day.getTime());
		return date;
	}
分享到:
评论
6 楼 远去的渡口 2011-08-26  
不过,不清楚你项目中的需求是什么,2008-12-28 -- 2009-01-02 相差多少年:0,从某个方面来看,相差0年,或者1年,都说得通了,哈哈
5 楼 远去的渡口 2011-08-26  
if(stype==2){    
             n = (int)n/365;    
         }

这样写貌似有很大问题。
2008-12-28 -- 2009-01-02 相差多少年:0

1)这里没有考虑到闰年平年的问题吧。
2)这种效率太低了。
建议用
假如参数是:compareDate(startDate,endDate,2)

         Calendar c = Calendar.getInstance();  
        Calendar c1 = Calendar.getInstance();
            Date startDate = formatDate(start);  
            Date endDate = formatDate(end);  
            c.setTime(startDate);  
            c1.setTime(endDate);  

      int difyear = c1.get(Calendar.YEAR) - c.get(Calendar.YEAR);//两个日期相差的年份。  
4 楼 gundumw100 2011-08-26  
amwiacel 写道
你这个是错误的
int a=PubDate.compareDate("2011-05-10","2011-09-08",0);

得到124年!

124天!
3 楼 amwiacel 2011-08-26  
你这个是错误的
int a=PubDate.compareDate("2011-05-10","2011-09-08",0);

得到124年!
2 楼 记忆无泪 2010-11-18  
你好 請問我可以將你的這篇文章轉載嗎?
1 楼 guojinde 2010-03-26  
顶一个先..试用去了..多谢分享

相关推荐

    java实现两个时间相差的年月日 (相差几年几天几日的结果)

    网上很多资源都没有输出结果是(相差几年几个月几天的代码)希望对大家有帮助 有不足地方 望大家多多指点

    java 日期操作工具类:包括计算两个时间相差距离多少天多少小时多少分多少秒

    这篇博客文章“java 日期操作工具类:包括计算两个时间相差距离多少天多少小时多少分多少秒”提供了一个实用的工具类,帮助开发者更方便地处理日期和时间差异。下面将详细解释这个工具类中的关键知识点。 1. **Java...

    Java 计算两个日期之间相差的月数

    在Java编程语言中,计算两个日期之间相差的月数是一个常见的任务,这通常涉及到日期处理和时间计算。本文将深入探讨如何使用Java实现这个功能,包括标准库中的API以及一些高级方法。 首先,Java 8引入了`java.time`...

    计算两个时间相差几年几月

    用于计算两个时间的差值,非常实用!

    比较两个日期相差多少秒的几种方法

    在编程中,经常需要处理日期和时间,包括比较两个日期之间的差距。这个任务可以用于记录事件发生的时间间隔,计算年龄,或者在各种时间相关的算法中。以下是对标题和描述中提到的四种方法的详细解释: 1. **...

    比较两个日期之间相差的天数

    ### 比较两个日期之间相差的天数 在Java编程语言中,比较两个日期之间的差值是一个常见的需求,尤其是在处理日历相关的功能时。本文将详细介绍如何在Java中计算两个日期之间的天数差,并对给出的代码进行解析。 ##...

    两个日期间计算 除去节假日 非工作时间

    在 Java 语言中,计算两个日期之间的工作日时间是一个常见的需求,特别是在需要排除周末和法定节假日的情况下。本文将通过一个示例代码,详细介绍如何计算两个日期之间的工作日时间,排除周末和法定节假日。 首先,...

    Java判断两个日期相差天数的方法

    在Java编程中,有时我们需要计算两个日期之间的差异,比如判断两个日期相差的天数。这里主要介绍两种不同的方法来实现这个功能。 首先,我们可以使用`java.util.Calendar`类来计算两个日期之间的差值。以下是一个...

    JS计算两个时间相差分钟数的方法示例

    在JavaScript中,计算两个时间相差的分钟数是一个常见的任务,特别是在处理用户输入或者进行时间相关的逻辑时。本文通过一个具体的示例,展示了如何利用JavaScript来计算两个时间的差距,以分钟为单位。以下是对该...

    JAVA计算两个日期相差的实例

    在Java编程中,计算两个日期之间的差异是一项常见的任务,特别是在处理物流、数据分析或其他与时间相关的功能时。在Java中,有多种方法可以实现这个功能,包括使用`java.util.Date`、`java.time`包(自Java 8引入)...

    2023年日历(标记工作日,节假日,调休,周末),计算两个日期相差的工作日天数

    压缩包里有2个文件,用于计算两个日期相差的工作日天数(排除周末和法定节假日): 1、excel表为2023年日历数据,并且备注工作日、周末,调休、节假日类型,可导入数据库。 2、SQL文件为2023年所有日期的插入SQL,并...

    Java中使用period和duration计算时间差

    在 Java 中,计算时间差可以使用 Period 和 Duration 两个类,它们都是不可变的、线程安全的。下面是对这两个类的详细介绍和使用示例。 Period 类 Period 类用于计算两个日期之间的时间差,最高精度为天。它可以...

    java 判断平闰年

    此外,闰年判断在计算日期相关的算法中非常重要,比如计算两个日期之间的相差天数、计算某月有多少天等。理解这个概念对于编写正确的日期处理代码至关重要。在学习和使用Java进行日期和时间操作时,掌握这些基础知识...

    DateUtil.java

    2. **计算月份数**:`getMonthsBetween(Date startDate, Date endDate)` 方法可能会先计算两个日期之间的总天数,然后根据每个月平均有多少天来推算相差的月数。由于月份的天数不固定,处理闰年的情况需要额外考虑。...

    Android进阶之使用时间戳计算时间差

    Android进阶之使用时间戳计算时间差是Android开发中的一项重要技术,主要用于计算两个时间点之间的时间差。这种技术在实际开发中非常常用,例如在聊天记录、日志记录、时效性统计等场景下。 本文将详细介绍Android...

    2022年日期类型(工作日,节假日,周末,节假日调休)

    1、excel表数据为2022年周末休息日和法定节假日数据,并且备注周末和节假日类型,可导入数据库,用于计算两个日期相差的工作日天数(排除周末和法定节假日)。 2、SQL文件为2022年所有日期,并标注:工作日、法定节...

    编程中通用解决日期时间组合问题

    7. **日期时间的计算**:除了基本的比较和格式化,我们还经常需要计算日期时间的差值,如计算两个日期之间相差多少天,或某个事件距今有多长时间。Python的timedelta,Java的Duration和Period,JavaScript的`getTime...

    一个可以计算天数的软件

    软件的描述中提到的“计算一个时间点距另一个时间点有多少天”,这是通过日期差算法实现的。这种算法通常涉及将日期转换为某种数值表示(如自公元0年以来的总天数),然后计算两个日期之间的差值。在Python中,可以...

    KacGunKaldi:显示两个日期之间有多少天的 Android 应用程序

    这段代码会输出“Days between: 365”,表示从2022年1月1日到2023年1月1日正好相隔365天。 在Android应用开发中,UI界面的交互同样重要。KacGunKaldi可能会使用Android的布局文件(XML)来设计用户界面,包括输入...

    日期的算法

    例如,计算两个日期之间相差多少天,需要考虑到它们所在的月份天数差异以及是否跨越了闰年的2月29日。 在实际项目中,我们常常需要处理时间间隔(interval),这在标签中有所提及。在编程中,这通常用`Duration`或`...

Global site tag (gtag.js) - Google Analytics