问题描述:
比如两个日期: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)
}