在实际的应用中,我们经常会比较两个日期相差的天数,下面我们通过java方法判断两个日期所差的额天数。
具体内容,请看下面的代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
package
com.jd.jr.fclient.test;
import
org.junit.Test;
import
java.text.ParseException;
import
java.text.SimpleDateFormat;
import
java.util.Calendar;
import
java.util.Date;
/**
* 日期测试类
*
* @author [email protected]
* @since 2016/3/18 0018
*/
public
class
DateTest {
/**
* 使用Calendar类 辅助完成天数的差值
* 在不涉及到跨年的情况,此种方法是没问题的
* 但是设计跨年的情况,此种方法回出问题的哦
*
* 如果时间为:2016-03-18 11:59:59 和 2016-03-19 00:00:01的话差值为 1
*
* @throws ParseException
*/
@Test
public
void
daysOfTwo_1()
throws
ParseException {
SimpleDateFormat sdf=
new
SimpleDateFormat(
"yyyy-MM-dd"
);
//跨年的情况会出现问题哦
//如果时间为:2016-03-18 11:59:59 和 2016-03-19 00:00:01的话差值为 1
Date fDate=sdf.parse(
"2015-12-31"
);
Date oDate=sdf.parse(
"2016-01-01"
);
Calendar aCalendar = Calendar.getInstance();
aCalendar.setTime(fDate);
int
day1 = aCalendar.get(Calendar.DAY_OF_YEAR);
aCalendar.setTime(oDate);
int
day2 = aCalendar.get(Calendar.DAY_OF_YEAR);
int
days=day2-day1;
System.out.print(days);
}
/**
* 通过毫秒值,手动计算日期间的相关的值
*
* 跨年不会出现问题
* 使用此种方法的话需要注意
* 如果时间为:2016-03-18 11:59:59 和 2016-03-19 00:00:01的话差值为 0
*
* @throws ParseException
*/
@Test
public
void
daysOfTwo_2()
throws
ParseException {
SimpleDateFormat sdf=
new
SimpleDateFormat(
"yyyy-MM-dd"
);
//跨年不会出现问题
//如果时间为:2016-03-18 11:59:59 和 2016-03-19 00:00:01的话差值为 0
Date fDate=sdf.parse(
"2015-12-31"
);
Date oDate=sdf.parse(
"2016-01-01"
);
long
days=(oDate.getTime()-fDate.getTime())/(
1000
*
3600
*
24
);
System.out.print(days);
}
}
|
大家可以根据实际的需要选择对应的计算方法即可。
下面附上JS计算两个日期的相差天数的值计算方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
var date1=
new
Date();
//开始时间
alert(
"aa"
);
var date2=
new
Date();
//结束时间
var date3=date2.getTime()-date1.getTime()
//时间差的毫秒数
//计算出相差天数
var days=Math.floor(date3/(
24
*
3600
*
1000
))
//计算出小时数
var leave1=date3%(
24
*
3600
*
1000
)
//计算天数后剩余的毫秒数
var hours=Math.floor(leave1/(
3600
*
1000
))
//计算相差分钟数
var leave2=leave1%(
3600
*
1000
)
//计算小时数后剩余的毫秒数
var minutes=Math.floor(leave2/(
60
*
1000
))
//计算相差秒数
var leave3=leave2%(
60
*
1000
)
//计算分钟数后剩余的毫秒数
var seconds=Math.round(leave3/
1000
)
alert(
" 相差 "
+days+
"天 "
+hours+
"小时 "
+minutes+
" 分钟"
+seconds+
" 秒"
)
|
比较月数:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date auditTime = domainModel.getAuditTime();
String date1 = sdf.format(domainModel.getAuditTime());
String date2 = DateUtil.getNowDate();
Calendar bef = Calendar.getInstance();
Calendar aft = Calendar.getInstance();
try {
bef.setTime(sdf.parse(date1));
aft.setTime(sdf.parse(date2));
int sum = (aft.get(Calendar.MONTH) - bef.get(Calendar.MONTH)) + (aft.get(Calendar.YEAR) - bef.get(Calendar.YEAR)) * 12;
if (sum > 12) {
domainModel.setState(0);
if (MALL_BASE_DAO.update(domainModel)) {
response.setStatus(HttpServletResponse.SC_BAD_GATEWAY);
response.setHeader("Location", domainUrl);
return;
}
}
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
转载自:https://www.cnblogs.com/xiohao/p/5294412.html