08-07
28
JAVA日期时间相加减
作者:Java伴侣 日期:2008-07-28
复制内容到剪贴板 程序代码
import java.text.DateFormat;
import java.text.ParseException;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.yourcompany.struts.form.DateForm;
/**
* MyEclipse Struts
* Creation date: 08-16-2007
*
* XDoclet definition:
* @struts.action path="/date" name="dateForm" input="/date.jsp" scope="request" validate="true"
*/
public class DateAction extends Action {
/*
* Generated Methods
*/
/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
DateForm dateForm = (DateForm) form;// TODO Auto-generated method stub
String time1="2007-10-11";
String time2="2007-10-09 ";
String hh="09:00:10";
String mm="10:00:00";
int time=0;//相差毫秒数
int i=0; //天
int s=0;//秒
try{
//将字符串转相应格式的时间类型
DateFormat f = new SimpleDateFormat("yy-MM-dd");
DateFormat t = new SimpleDateFormat("hh:mm:ss");
Date h= new Date();
Date m= new Date();
Date d1 = new Date();
Date d2 = new Date();
//日期
d1 = f.parse(time1);
d2 = f.parse(time2);
//调日期相减得到天数
i=diffDate(d1,d2);
try {
//时间
h = t.parse(hh);
m = t.parse(mm);
//看一下前一天的时间是否比后一天的时间小
if(h.getTime()<m.getTime())
{
//如果成立,哪么天数相应去一天
i-=1;
time=(int)((h.getTime()+86500000 - m.getTime()) / (1000));//得到相差多少毫秒
}else
{
time=(int)((h.getTime() - m.getTime()) / (1000));//得到相差多少毫秒
}
} catch (ParseException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
//System.out.println("cccc:"+time%60);
//根据不同的时间,做出相应的处理=====具体是什么原因我也没有弄明白
//以下是处理秒的代码,暂时注释掉
//if(time%60==0)
//{
//s=(int)time%60;//到秒
//}else
//{
// s=(int)time%60-40;//到秒
//}
int ms=(int)time/60;//到总分钟
int hs=0;
if(ms>=60)
{
hs=(int)ms/60;//得到小时
ms-=(hs*60+1);//剩余分
}
//System.out.println("h:"+h.getTime()/3600);
//System.out.println("m:"+m.getTime());
System.out.println("天:"+i);
System.out.println("相差:"+time+"秒");
System.out.println("时:"+hs);
System.out.println("分:"+ms);
System.out.println("秒:"+s);
}catch(Exception e)
{
e.printStackTrace();
}
return null;
}
//日期相减
public static int diffDate(java.util.Date date, java.util.Date date1) {
return (int) ((getMillis(date) - getMillis(date1)) / (24 * 3600 * 1000));
}
// 返回毫秒
public static long getMillis(java.util.Date date) {
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTime(date);
return c.getTimeInMillis();
}
}
import java.text.ParseException;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.yourcompany.struts.form.DateForm;
/**
* MyEclipse Struts
* Creation date: 08-16-2007
*
* XDoclet definition:
* @struts.action path="/date" name="dateForm" input="/date.jsp" scope="request" validate="true"
*/
public class DateAction extends Action {
/*
* Generated Methods
*/
/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
DateForm dateForm = (DateForm) form;// TODO Auto-generated method stub
String time1="2007-10-11";
String time2="2007-10-09 ";
String hh="09:00:10";
String mm="10:00:00";
int time=0;//相差毫秒数
int i=0; //天
int s=0;//秒
try{
//将字符串转相应格式的时间类型
DateFormat f = new SimpleDateFormat("yy-MM-dd");
DateFormat t = new SimpleDateFormat("hh:mm:ss");
Date h= new Date();
Date m= new Date();
Date d1 = new Date();
Date d2 = new Date();
//日期
d1 = f.parse(time1);
d2 = f.parse(time2);
//调日期相减得到天数
i=diffDate(d1,d2);
try {
//时间
h = t.parse(hh);
m = t.parse(mm);
//看一下前一天的时间是否比后一天的时间小
if(h.getTime()<m.getTime())
{
//如果成立,哪么天数相应去一天
i-=1;
time=(int)((h.getTime()+86500000 - m.getTime()) / (1000));//得到相差多少毫秒
}else
{
time=(int)((h.getTime() - m.getTime()) / (1000));//得到相差多少毫秒
}
} catch (ParseException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
//System.out.println("cccc:"+time%60);
//根据不同的时间,做出相应的处理=====具体是什么原因我也没有弄明白
//以下是处理秒的代码,暂时注释掉
//if(time%60==0)
//{
//s=(int)time%60;//到秒
//}else
//{
// s=(int)time%60-40;//到秒
//}
int ms=(int)time/60;//到总分钟
int hs=0;
if(ms>=60)
{
hs=(int)ms/60;//得到小时
ms-=(hs*60+1);//剩余分
}
//System.out.println("h:"+h.getTime()/3600);
//System.out.println("m:"+m.getTime());
System.out.println("天:"+i);
System.out.println("相差:"+time+"秒");
System.out.println("时:"+hs);
System.out.println("分:"+ms);
System.out.println("秒:"+s);
}catch(Exception e)
{
e.printStackTrace();
}
return null;
}
//日期相减
public static int diffDate(java.util.Date date, java.util.Date date1) {
return (int) ((getMillis(date) - getMillis(date1)) / (24 * 3600 * 1000));
}
// 返回毫秒
public static long getMillis(java.util.Date date) {
java.util.Calendar c = java.util.Calendar.getInstance();
c.setTime(date);
return c.getTimeInMillis();
}
}
评论: 0 | 引用: 0 | 查看次数: 1667
发表评论