`
Luob.
  • 浏览: 1589678 次
  • 来自: 上海
社区版块
存档分类
最新评论

Java 计算两个日期相差的天数

    博客分类:
  • Java
阅读更多
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;


public class test16 {

	/**
	 * @param args
	 * @throws ParseException 
	 */
	public static void main(String[] args) throws ParseException {
		// TODO Auto-generated method stub
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date d1=sdf.parse("2012-09-08 10:10:10");
		Date d2=sdf.parse("2012-09-15 00:00:00");
		System.out.println(daysBetween(d1,d2));

		System.out.println(daysBetween("2012-09-08 10:10:10","2012-09-15 00:00:00"));
	}
	
	/** 
     * 计算两个日期之间相差的天数 
     * @param smdate 较小的时间
     * @param bdate  较大的时间
     * @return 相差天数
	 * @throws ParseException 
     */  
    public static int daysBetween(Date smdate,Date bdate) throws ParseException  
    {  
    	SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
    	smdate=sdf.parse(sdf.format(smdate));
    	bdate=sdf.parse(sdf.format(bdate));
        Calendar cal = Calendar.getInstance();  
        cal.setTime(smdate);  
        long time1 = cal.getTimeInMillis();               
        cal.setTime(bdate);  
        long time2 = cal.getTimeInMillis();       
        long between_days=(time2-time1)/(1000*3600*24);
          
       return Integer.parseInt(String.valueOf(between_days));         
    }  
    
/**
*字符串的日期格式的计算
*/
    public static int daysBetween(String smdate,String bdate) throws ParseException{
    	SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
        Calendar cal = Calendar.getInstance();  
        cal.setTime(sdf.parse(smdate));  
        long time1 = cal.getTimeInMillis();               
        cal.setTime(sdf.parse(bdate));  
        long time2 = cal.getTimeInMillis();       
        long between_days=(time2-time1)/(1000*3600*24);
          
       return Integer.parseInt(String.valueOf(between_days));   
    }

}
3
9
分享到:
评论
9 楼 tlghb 2013-03-13  
有可能还要去除节假日
8 楼 Foxswily 2012-09-14  
计算个日期要写这么多代码,各种抱怨早就有了,JSR-310http://sourceforge.net/apps/mediawiki/threeten/index.php?title=ThreeTen会有应对,大概要等到Java 8....

现在也有类库可用,比如Jodahttp://joda-time.sourceforge.net/
7 楼 willsonbin 2012-09-14  
好东西.。之前写图书馆管理系统有遇到过..
6 楼 captmjc 2012-09-13  
对,漏掉了时区因素。因为getTime()返回的永远是UTC时间,也就是时区永远比我们晚8个小时。所以,你还是calendar吧。或者不介意deprecated的话
	public static int daysBetween(Date smdate, Date bdate) {
		return (int)(((bdate.getTime() + bdate.getTimezoneOffset() * 60000L)/ 86400000L) - ((smdate.getTime() + smdate.getTimezoneOffset() * 60000L) / 86400000L));
	}
5 楼 Luob. 2012-09-13  
开始写这东西的时候和你写的一样,可是发现 时间上设置巧妙点,计算出来就不对了.不得已在这样写,没有找到原因。10 个小时不足一天 就不知道 怎么算出来多了一个1
4 楼 Luob. 2012-09-13  
captmjc 写道
captmjc 写道
public static int daysBetween(Date smdate,Date bdate) {
  return (int)((smdate.getTime() / 86400000L) - (bdate.getTime() / 86400000L));
}

利用整除,算出两个日期分别距离epoch(1970-01-01T00:00:00.000Z)的天数,然后减一下就可以了

补充一下,你之所以先format再parse是为了消除时分秒的影响。整除其实已经解决了这个问题,但是速度显然...


速度确实 有很大影响,
但是 我想说的
2012-09-08 10:00:00----2012-09-15 00:00:00  其实相隔 7天

上面写的有待优化
3 楼 Luob. 2012-09-13  
captmjc 写道
public static int daysBetween(Date smdate,Date bdate) {
  return (int)((smdate.getTime() / 86400000L) - (bdate.getTime() / 86400000L));
}

利用整除,算出两个日期分别距离epoch(1970-01-01T00:00:00.000Z)的天数,然后减一下就可以了

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d1=sdf.parse("2012-09-08 10:00:00");
Date d2=sdf.parse("2012-09-15 00:00:00");
System.out.println(daysBetween(d1,d2));
这样测试的时候 为 -6
2 楼 captmjc 2012-09-13  
captmjc 写道
public static int daysBetween(Date smdate,Date bdate) {
  return (int)((smdate.getTime() / 86400000L) - (bdate.getTime() / 86400000L));
}

利用整除,算出两个日期分别距离epoch(1970-01-01T00:00:00.000Z)的天数,然后减一下就可以了

补充一下,你之所以先format再parse是为了消除时分秒的影响。整除其实已经解决了这个问题,但是速度显然...
1 楼 captmjc 2012-09-13  
public static int daysBetween(Date smdate,Date bdate) {
  return (int)((smdate.getTime() / 86400000L) - (bdate.getTime() / 86400000L));
}

利用整除,算出两个日期分别距离epoch(1970-01-01T00:00:00.000Z)的天数,然后减一下就可以了

相关推荐

    计算两个日期相差的天数

    计算两个日期相差的天数 本文主要介绍了计算两个日期相差的天数的方法,使用 Java 语言实现,...本文介绍了计算两个日期相差的天数的方法,并提供了三个相关代码示例,希望能够帮助读者更好地理解 Java 中的日期计算。

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

    总的来说,Java提供了多种方式来计算两个日期之间相差的月数,选择哪种方法取决于你的具体需求,如是否需要考虑日期中的天数,以及是否处理跨闰年的边界问题。对于简单的情况,`ChronoUnit.MONTHS.between()`就足够...

    java中计算两个日期相差几天

    ### Java中计算两个日期相差几天 在Java编程中,经常需要处理与日期和时间相关的操作。其中一项常见的需求就是计算两个日期之间的差距。本篇文章将详细介绍如何在Java中计算两个日期相差几天,并深入探讨示例代码中...

    计算2个日期相差天数、去除节假日周末

    接下来,我们需要一个函数来计算两个日期之间的总天数。C++标准库中的`chrono`模块可以方便地处理日期和时间的计算。我们可以通过`std::chrono::days`来表示日期差: ```cpp std::chrono::days daysBetween(const ...

    Java中计算两个日期相差天数和比较2日期先后顺序

    ### Java中计算两个日期相差天数 在Java中,计算两个日期之间相差的天数是一项常见且实用的功能。本文将详细介绍如何使用`SimpleDateFormat`、`Date`以及`Calendar`类来实现这一功能。 #### 代码解读 首先,我们...

    java比较两个日期相差的天数

    calendar 比较2个日期相差的天数 还可以比较相差的秒数天数

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

    在Java编程语言中,计算两个日期之间的天数差是一个常见的任务,这在处理时间相关的业务逻辑时非常有用。本文将详细介绍如何使用Java进行此类计算,包括基础方法、API的使用以及可能遇到的问题。 首先,Java提供了`...

    Android 获取2个日期相差天数

    在Android开发中,有时我们需要计算两个日期之间的差值,例如计算两个生日之间相差多少天,或者确定一个事件...以上就是如何在Android中获取两个日期相差天数的方法,你可以根据具体需求将这段代码整合到你的项目中。

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

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

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

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

    利用Java中Calendar计算两个日期之间的天数和周数

    这两个函数结合使用,可以有效地帮助你在Java程序中处理日期之间的天数和周数的计算,这对于进行日期相关的业务逻辑或者数据分析来说非常有用。需要注意的是,这些函数假设日期都是按照格里高利历来计算的,如果你...

    JAVA求两个日期之间相差的天数

    在Java编程中,计算两个日期之间相差的天数是一个常见的任务,这通常涉及到日期类的使用。Java提供了多种处理日期和时间的类,比如`java.util.Date`、`java.util.Calendar`以及`java.time`包中的`LocalDate`等。在本...

    计算除周六日、法定节假日以外两个日期之间的间隔天数

    计算除周六日、法定节假日以外两个日期之间的间隔天数

    获取两个日期类型相差天数

    获取两个日期之间的天数,使用整数计量而不是毫秒数约算,例:2017-11-26 23:59:59 与2017-11-27 00:00:00相差天数是1.

    日期工具类 可以进行日期天数计算

    这个工具类是计算两个时间相差多少天的工具类以及格式化时间

    Java编程输入两个年月日,(1)判断两个日期是否相同,并且将相差的天数显示出来;(2)将日期后推或前推N天,并将该日期输出。

    综上所述,这个Java程序主要实现了两个功能:一是判断两个给定日期是否相同及计算它们之间的天数差;二是将给定日期向前或向后调整一定数量的天数。程序的核心是`DateType`类的设计与实现,它包含了日期的创建、打印...

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

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

    计算两日期的时间差

    计算两日期之间的时间差,输入两个年月日 计算相差天数

    java计算两个时间相差天数的方法汇总

    在Java编程中,计算两个时间相差的天数是一项常见的任务,尤其在处理日期相关的业务逻辑时。本篇文章将深入探讨两种不同的方法来实现这个功能。 首先,我们可以利用`Calendar`类来计算日期之间的天数差。`Calendar`...

    指定两个日期计算相隔的天数

    "指定两个日期计算相隔的天数"这一功能通常涉及日期函数的使用,这些函数能够帮助我们快速地得出两个日期间的差距,即天数。这里我们将详细探讨如何实现这一功能,以及相关的编程语言和工具。 1. **通用方法**: ...

Global site tag (gtag.js) - Google Analytics