timeutil.java
来自「公司自己开发的工作流引擎」· Java 代码 · 共 209 行
JAVA
209 行
package cn.com.iaspec.workflow.util;
import cn.com.iaspec.workflow.db.WorkflowDBConnectionManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.sql.CallableStatement;
import java.util.List;
import java.sql.Connection;
import cn.com.iaspec.workflow.privilege.dao.LoginDAO;
import org.apache.log4j.Logger;
import java.sql.Timestamp;
import cn.com.iaspec.workflow.WorkflowConstant;
/**
* <p>Title:时间转换实用类</p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2006</p>
*
* <p>Company: iASPEC Technologies</p>
*
* @author xiesonglin
* @version 1.5
*/
public class TimeUtil{
private static Logger logger=Logger.getLogger(TimeUtil.class);
public TimeUtil(){
}
/**
* 取得开始时间与结束时间的自然日时间间隔
* @param startDate 开始时间
* @param endDate 结束日期
* @return 返回@start_date到@cur_date时间段内的自然日时间间隔(单位为毫秒)
*/
public long getNaturedayPassTime(java.util.Date startDate,
java.util.Date endDate){
Connection conn=null;
long passTime=0;
CallableStatement callStm=null;
try{
//取得有权限的功能接点id
conn=WorkflowDBConnectionManager.getInstance().getConnection();
String sql="{?=call F_GET_NATURE_DAY_UPDATE_TIME(?,?)}";
callStm=conn.prepareCall(sql);
callStm.registerOutParameter(1,java.sql.Types.INTEGER);
callStm.setTimestamp(2,
startDate==null?null:new Timestamp(startDate.getTime()));
callStm.setTimestamp(3,endDate==null?null:new Timestamp(endDate.getTime()));
callStm.execute();
passTime=callStm.getLong(1);
callStm.close();
}
catch(Exception ex){
ex.printStackTrace();
}
finally{
WorkflowDBConnectionManager.getInstance().close(conn);
}
return passTime;
}
/**
* 取得开始时间与结束时间的工作日时间间隔
* @param startDate 开始时间
* @param endDate 结束日期
* @return 返回@start_date到@cur_date时间段内的工作日时间间隔(单位为毫秒)
*/
public long getWorkdayPassTime(java.util.Date startDate,
java.util.Date endDate){
Connection conn=null;
long passTime=0;
CallableStatement callStm=null;
try{
//取得有权限的功能接点id
conn=WorkflowDBConnectionManager.getInstance().getConnection();
String sql="{?=call F_GET_WORK_DAY_UPDATE_TIME(?,?)}";
callStm=conn.prepareCall(sql);
callStm.registerOutParameter(1,java.sql.Types.INTEGER);
callStm.setTimestamp(2,
startDate==null?null:new Timestamp(startDate.getTime()));
callStm.setTimestamp(3,endDate==null?null:new Timestamp(endDate.getTime()));
callStm.execute();
passTime=callStm.getLong(1);
callStm.close();
}
catch(Exception ex){
ex.printStackTrace();
}
finally{
WorkflowDBConnectionManager.getInstance().close(conn);
}
return passTime;
}
/**
*取得预期的时间
* @srcDate 指定的时间
*@ pastime 时间段,未经过转换的时间
*@ timeUnitType 时间单位
*@return 预期的时间
*/
public java.util.Date getAnticipateDate(java.util.Date srcDate,
double passTime,String timeUnitType){
long pass=0;
java.util.Date date=null;
if(timeUnitType!=null){
//自然日
if(timeUnitType.toUpperCase().equals(WorkflowConstant.
TIMEUNIT_TYPE_NATUREDAY)){
pass=this.getNatureday(passTime);
date=getNaturedayAnticipateDate(srcDate,pass);
}
//工作日
else if(timeUnitType.toUpperCase().equals(WorkflowConstant.
TIMEUNIT_TYPE_WORKDAY)){
pass=this.getWorkday(passTime);
date=getWorkdayAnticipateDate(srcDate,pass);
}
}
return date;
}
/**
* 取得自然日预期的时间
* @param srcDate 指定的时间
* @param passTime 时间段,单位为毫秒
* @return 预期的时间
*/
public java.util.Date getNaturedayAnticipateDate(java.util.Date srcDate,
long passTime){
Connection conn=null;
java.util.Date date=null;
CallableStatement callStm=null;
try{
//取得有权限的功能接点id
conn=WorkflowDBConnectionManager.getInstance().getConnection();
String sql="{?=call F_GET_NATUREDAY_PASS_DATE(?,?)}";
callStm=conn.prepareCall(sql);
callStm.registerOutParameter(1,java.sql.Types.TIMESTAMP);
callStm.setTimestamp(2,srcDate==null?null:new Timestamp(srcDate.getTime()));
callStm.setLong(3,passTime);
callStm.execute();
date=callStm.getTimestamp(1);
callStm.close();
}
catch(Exception ex){
ex.printStackTrace();
}
finally{
WorkflowDBConnectionManager.getInstance().close(conn);
}
return date;
}
/**
* 取得工作日预期的时间
* @param srcDate 指定的时间
* @param passTime 时间段,单位为毫秒
* @return 预期的时间
*/
public java.util.Date getWorkdayAnticipateDate(java.util.Date srcDate,
long passTime){
Connection conn=null;
java.util.Date date=null;
CallableStatement callStm=null;
try{
//取得有权限的功能接点id
conn=WorkflowDBConnectionManager.getInstance().getConnection();
String sql="{?=call F_GET_WORKDAY_PASS_DATE(?,?)}";
callStm=conn.prepareCall(sql);
callStm.registerOutParameter(1,java.sql.Types.TIMESTAMP);
callStm.setTimestamp(2,srcDate==null?null:new Timestamp(srcDate.getTime()));
callStm.setLong(3,passTime);
callStm.execute();
date=callStm.getTimestamp(1);
callStm.close();
}
catch(Exception ex){
ex.printStackTrace();
}
finally{
WorkflowDBConnectionManager.getInstance().close(conn);
}
return date;
}
/**
* 取得自然日转换时间
* @param date 未经转换的时间
* @return 取得自然日,单位为毫秒
*/
public long getNatureday(double date){
return Math.round(date*24*60*60*1000);
}
/**
* 取得工作日转换时间
* @param date 未经转换的时间
* @return 取得工作日,单位为毫秒
*/
public long getWorkday(double date){
return Math.round(date*WorkflowConstant.HOURS_PER_WORKDAY*60*60*1000);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?