java中计算两个日期之间差的天数

Python012

java中计算两个日期之间差的天数,第1张

分类: 电脑/网络 >>程序设计 >>其他编程语言

问题描述:

比如两个日期:2005-12-31和2006-01-05,怎么才能精确的计算出这两个日期之间差的天数?

望回答的详细一些,谢了先.

解析:

import java.text.ParseException

import java.text.SimpleDateFormat

import java.util.Date

class Test2 {

public static String getDate(){

SimpleDateFormat ft = new SimpleDateFormat("yyyy/MM/dd")

Date dd = new Date()

return ft.format(dd)

}

public static long getQuot(String time1, String time2){

long quot = 0

SimpleDateFormat ft = new SimpleDateFormat("yyyy/MM/dd")

try {

Date date1 = ft.parse( time1 )

Date date2 = ft.parse( time2 )

quot = date1.getTime() - date2.getTime()

quot = quot / 1000 / 60 / 60 / 24

} catch (ParseException e) {

e.printStackTrace()

}

return quot

}

public static void main(String[] args) throws Exception {

String date1 = "2008/8/8"

String date2 = getDate()

long day = getQuot(date1,date2)

System.out.println( "距离 "+date1+" 还有 "+day+" 天" )

}

}

你看一下这段代码,是从今天到2008/8/8的天数。

Date的getTime()方法返回自1970年1月1日午夜(通用时间)以来的毫秒数。

用2008/8/8的getTime()减去今天的getTime()就是这两天相差的毫秒数,1秒=1000毫秒,1分钟=60秒,1小时=60分钟,1天=24小时,然后除除除就得到天数了。

java计算某日期之后的日期,可以参考如下代码:

public static void main(String[] args) {

// 时间表示格式可以改变,yyyyMMdd需要写例如20160523这种形式的时间

SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd")

String str = "2016/05/23"

// 将字符串的日期转为Date类型,ParsePosition(0)表示从第一个字符开始解析

Date date = sdf.parse(str, new ParsePosition(0))

Calendar calendar = Calendar.getInstance()

calendar.setTime(date)

// add方法中的第二个参数n中,正数表示该日期后n天,负数表示该日期的前n天

calendar.add(Calendar.DATE, -10)

Date date1 = calendar.getTime()

String out = sdf.format(date1)

System.out.println(out)

}

思路就是根据它们相差的毫秒数除以每天的毫秒数(60*60*24*1000),代码如下:

public static void main(String[] args) throws ParseException {

String date1="1987-01-01"

String date2="2010-01-01"

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-mm-dd")

Date d1=sdf.parse(date1)

Date d2=sdf.parse(date2)

long daysBetween=(d2.getTime()-d1.getTime()+1000000)/(60*60*24*1000)

System.out.println("1987-01-01 与 2010-01-01 相隔 "+daysBetween+" 天")

}

运行结果如下:

扩展资料:

Java使用以下三种方法来比较两个日期:

1、使用 getTime() 方法获取两个日期(自1970年1月1日经历的毫秒数值),然后比较这两个值。

2、使用方法 before(),after() 和 equals()。例如,一个月的12号比18号早,则 new Date(99, 2, 12).before(new Date (99, 2, 18)) 返回true。

3、使用 compareTo() 方法,它是由 Comparable 接口定义的,Date 类实现了这个接口。

SimpleDateFormat 是一个以语言环境敏感的方式来格式化和分析日期的类。SimpleDateFormat 允许你选择任何用户自定义日期时间格式来运行

例如:

SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss")

这一行代码确立了转换的格式,其中 yyyy 是完整的公元年,MM 是月份,dd 是日期,HH:mm:ss 是时、分、秒。

注意:有的格式大写,有的格式小写,例如 MM 是月份,mm 是分;HH 是 24 小时制,而 hh 是 12 小时制。

以上实例编译运行结果如下:

当前时间为: 2018-09-14 10:16:34

参考资料:

Java官方API接口-Date

菜鸟教程-Java 日期时间