此功能的实现也是运用Calendar类实现的:
getTimeInMillis()方法
此方法返回一个long类型的时间值,以毫秒为单位。
我们可以获得两个日期的long类型的时间值,然后相减取绝对值, 然后进行运算,就可以获得两个日期相差的天数了!!
代码实现:
1.JavaBean文件:
StringUtil.java
package exa147;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class StringUtil {
private String dateStr1; //第一个日期字符串
private String dateStr2; //第二个日期字符串
private int minus; //两个日期的差
public String getDateStr1() {
return dateStr1;
}
public void setDateStr1(String dateStr1) {
this.dateStr1 = dateStr1;
}
public String getDateStr2() {
return dateStr2;
}
public void setDateStr2(String dateStr2) {
this.dateStr2 = dateStr2;
}
public int getMinus() {
Calendar c1 = this.getCalendar(dateStr1); //根据第一个日期字符串获得Calendar对象
Calendar c2 = this.getCalendar(dateStr2); //根据第二个日期字符串获得Calendar对象
long t1 = c1.getTimeInMillis(); //获得此对象的时间值,以毫秒为单位
long t2 = c2.getTimeInMillis(); //获得此对象的时间值,以毫秒为单位
long t = 1000*60*60*24; //1000毫秒*60秒*60分钟*24小时
minus = Math.abs((int)((t2-t1)/t)); //获得两个日期相差的天数
return minus;
}
public void setMinus(int minus) {
this.minus = minus;
}
public Calendar getCalendar(String dateStr) {
Date date =null; //声明一个Date类型的对象
SimpleDateFormat format = null; //声明格式化日期的对象
Calendar calendar = null;
if(dateStr!=null){
format = new SimpleDateFormat("yyyy-MM-dd");//创建日期的格式化类型
calendar = Calendar.getInstance(); //创建一个Calendar类型的对象
try { //forma.parse()方法会抛出异常
date = format.parse(dateStr); //解析日期字符串,生成Date对象
calendar.setTime(date); //使用Date对象设置此Calendar对象的时间
} catch (ParseException e) {
e.printStackTrace();
}
}
return calendar;
}
}
2.JSP文件:
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="getminus.jsp" method="post">
<table>
<tr>
<td align="right">请输入第一个日期:</td>
<td><input type="text" name="datestr1" />
<font>格式为:2008-08-80</font>
</td>
</tr>
<tr>
<td align="right">请输入第二个日期:</td>
<td><input type="text" name="datestr2" />
<font>格式为:2008-08-80</font>
</td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="提 交" /></td>
</tr>
</table>
</form>
</body>
</html>
getminus.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String dateStr1 = request.getParameter("datestr1");
String dateStr2 = request.getParameter("datestr2");
%>
<!-- 使用useBean动作标签导入JavaBean对象 -->
<jsp:useBean id="strBean" class="exa147.StringUtil"></jsp:useBean>
<!-- 对StringUtil类的dateStr1属性赋值 -->
<jsp:setProperty property="dateStr1" name="strBean" value="<%=dateStr1 %>"/>
<!-- 对StringUtil类的dateStr2属性赋值 -->
<jsp:setProperty property="dateStr2" name="strBean" value="<%=dateStr2 %>"/>
<table>
<tr>
<td align="right">第一个日期为:</td>
<td>
<!-- 从StringUtil对象中获得dateStr1的属性值 -->
<jsp:getProperty property="dateStr1" name="strBean"/>
</td>
</tr>
<tr>
<td align="right">第二个日期为:</td>
<td>
<!-- 从StringUtil对象中获得dateStr2的属性值 -->
<jsp:getProperty property="dateStr2" name="strBean"/>
</td>
</tr>
<tr >
<td align="right">两个日期相差的天数为:</td>
<td >
<!-- 从StringUtil对象中获得minus的属性值 -->
<jsp:getProperty property="minus" name="strBean"/>
</td>
</tr>
</table>
</body>
</html>
结果: