08-07
28

JAVA日期时间相加减

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();
  }


}


[本日志由 blurxx 于 2008-07-28 09:43 AM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: 时间 相减 相加
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.