方法1:
通過Calendar類的日期比較。注意:這里需要考慮一下:
- 日期是跨年份的,如一個(gè)是2012年,一個(gè)是2015年的
- 年份是分閏年和平年的,各自的天數(shù)不同
/**
?
* date2比date1多的天數(shù)
?
* @param date1?
?
* @param date2
?
* @return?
?
*/
?
public
static
int
differentDays(Date date1,Date date2)
?
{
?
Calendar cal1 = Calendar.getInstance();
?
cal1.setTime(date1);
??
??
Calendar cal2 = Calendar.getInstance();
?
cal2.setTime(date2);
?
int
day1= cal1.get(Calendar.DAY_OF_YEAR);
?
int
day2 = cal2.get(Calendar.DAY_OF_YEAR);
??
??
int
year1 = cal1.get(Calendar.YEAR);
?
int
year2 = cal2.get(Calendar.YEAR);
?
if
(year1 != year2)
//同一年
?
{
??
int
timeDistance =
0
;
??
for
(
int
i = year1 ; i < year2 ; i ++)
??
{
??
if
(i%
4
==
0
&& i%
100
!=
0
|| i%
400
==
0
)
//閏年??
??
{
???
timeDistance +=
366
;
??
}
??
else
//不是閏年
??
{
???
timeDistance +=
365
;
??
}
??
}
???
???
return
timeDistance + (day2-day1) ;
?
}
?
else
//不同年
?
{
??
System.out.println(
"判斷day2 - day1 : "
+ (day2-day1));
??
return
day2-day1;
?
}
?
}
-
方法2:
直接通過計(jì)算兩個(gè)日期的毫秒數(shù),他們的差除以一天的毫秒數(shù),即可得到我們想要的兩個(gè)日期相差的天數(shù)。
/**
?
* 通過時(shí)間秒毫秒數(shù)判斷兩個(gè)時(shí)間的間隔
?
* @param date1
?
* @param date2
?
* @return
?
*/
?
public
static
int
differentDaysByMillisecond(Date date1,Date date2)
?
{
?
int
days = (
int
) ((date2.getTime() - date1.getTime()) / (
1000
*
3600
*
24
));
?
return
days;
?
}
- 測(cè)試代碼:
-
public
static
void
main(String[] args)?
?
{
?
String dateStr =
"2008-1-1 1:21:28"
;
?
String dateStr2 =
"2010-1-2 1:21:28"
;
?
SimpleDateFormat format =
new
SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss"
);
?
SimpleDateFormat format2 =
new
SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss"
);
?
try
??
{
??
Date date2 = format.parse(dateStr2);
??
Date date = format.parse(dateStr);
???
???
System.out.println(
"兩個(gè)日期的差距:"
+ differentDays(date,date2));
??
System.out.println(
"兩個(gè)日期的差距:"
+ differentDaysByMillisecond(date,date2));
?
}
catch
(ParseException e) {
??
e.printStackTrace();
?
}
?
}
-
結(jié)果:文章來源:http://www.zghlxwxcb.cn/news/detail-419774.html
兩個(gè)日期的差距:732
兩個(gè)日期的差距:732
兩種實(shí)現(xiàn)方式的比較:方式一的話,只是通過日期來進(jìn)行比較兩個(gè)日期的相差天數(shù)的比較,沒有精確到相差到一天的時(shí)間。如果是只是純粹通過日期(年月日)來比較比較的話就是方式一。
對(duì)于方式二,是通過計(jì)算兩個(gè)日期相差的毫秒數(shù)來計(jì)算兩個(gè)日期的天數(shù)差的。一樣會(huì)有一個(gè)小問題,就是當(dāng)他們相差是23個(gè)小時(shí)的時(shí)候,它就不算一天了。如下面的兩個(gè)日期
2015-1-1 21:21:28
2015-1-2 1:21:28 -
測(cè)試代碼:
-
public
static
void
main(String[] args)?
?
{
?
String dateStr =
"2015-1-1 21:21:28"
;
?
String dateStr2 =
"2015-1-2 1:21:28"
;
?
SimpleDateFormat format =
new
SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss"
);
?
SimpleDateFormat format2 =
new
SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss"
);
?
try
??
{
??
Date date2 = format.parse(dateStr2);
??
Date date = format.parse(dateStr);
???
???
System.out.println(
"兩個(gè)日期的差距:"
+ differentDays(date,date2));
??
System.out.println(
"兩個(gè)日期的差距:"
+ differentDaysByMillisecond(date,date2));
?
}
catch
(ParseException e) {
??
e.printStackTrace();
?
}
?
}
結(jié)果:
兩個(gè)日期的差距:1
兩個(gè)日期的差距:0
兩種方式的不同了,在具體時(shí)間相差不到24小時(shí)時(shí),方式2的方式不算一天,而方式1是通過日期(年月日)來判斷的,所以算相差一天。文章來源地址http://www.zghlxwxcb.cn/news/detail-419774.html
到了這里,關(guān)于java計(jì)算兩個(gè)時(shí)間相差天數(shù)的方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!