Java Calendar 类用例(处理时间)

来源:互联网 发布:个人淘宝店铺转让 编辑:程序博客网 时间:2024/06/06 12:40
import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Arrays;import java.util.Calendar;import java.util.Date;import java.util.List;import java.util.UUID;import cn.xroot.base.action.ParamsTable;import cn.xroot.core.dynaform.document.ejb.Document;import cn.xroot.core.dynaform.dts.datasource.ejb.DataSourceProcess;import cn.xroot.util.ProcessFactory;/** * 提醒功能 * @author FGF * */public class Xxtx {/** * 保存提醒信息 * @param document   当前文档对象 * @param sjy      数据源名称 * @throws Exception */public void doSaveTx(Document document,String sjy) throws Exception{ParamsTable params=document.get_params();SimpleDateFormat sdf_yyyyMMddHHmm=new SimpleDateFormat("yyyy-MM-dd HH:mm");//软件idString applicationID=(String) params.getParameter("applicationid");//获取当前数据id        String docid = document.getId();;//用户idString userid=document.getAuthorId();//操作数据库对象DataSourceProcess dataSourceProcess = (DataSourceProcess) ProcessFactory.createProcess(DataSourceProcess.class);//提醒方式        Object txfs=params.getParameter("txfs");         StringBuffer txfssb = new StringBuffer();        if(txfs!=null){         if("String".equals(getType(txfs))){         String _selects= (String) txfs;         if(_selects != null &&_selects.length()>0);{             txfssb. append(_selects+",");         }             }else{                 String[] _selects= (String[]) txfs;                 for(int s = 0; s < _selects.length; s++){                 String select=_selects[s];                     if(select != null &&select.length()>0);{                     txfssb. append(_selects[s]+",");                     }                 }             }        }//提醒周期   0: 每日 1 :每周 2: 每月 3:  每年  4:  固定时限String txzq=(String) params.getParameter("txzq");//提醒时间//String txsj=(String) params.getParameter("txsj");String txsj="15:56";//重复次数int cfcs= params.getParameterAsInteger("cfcs");//重复间隔int cfjg= params.getParameterAsInteger("cfjg");//提醒内容String txnr=(String) params.getParameter("txnr");//提醒对象String txdx=(String) params.getParameter("txdx");//获取当前时间    Date date = new Date();      Calendar nowCa = Calendar.getInstance();      nowCa.setTime(date);          int nowYear = nowCa.get(Calendar.YEAR);          int nowMounth = nowCa.get(Calendar.MONTH) + 1;          int nowDay = nowCa.get(Calendar.DATE);         int endMounth=12;        //只保存五年        int endYear=nowYear+5;        List<String> sqlList=new ArrayList<String>();        //每日if("0".equals(txzq)){//年for(int y=nowYear;y<=endYear;y++){int m=nowMounth;if(y!=nowYear){m=1;}//月while(m<=endMounth){int dayOfMonth = getDayOfMonth(y,m);int d=nowDay;if(m!=nowMounth){d=1;}//日while(d<=dayOfMonth){//提醒消息时间String txxxsj=""+y+"-"+m+"-"+d+" "+txsj;    Calendar txCa = Calendar.getInstance();    //重读提醒    if(cfcs>0){    txCa.setTime(sdf_yyyyMMddHHmm.parse(txxxsj));for(int c=1;c<=cfcs;c++){//将重复间隔加入提醒时间txCa.add(Calendar.MINUTE,cfjg);txxxsj=sdf_yyyyMMddHHmm.format(txCa.getTime());String uuid = UUID.randomUUID().toString(); String insertSql="INSERT INTO tlk_"+y+m+"_txgz VALUES";insertSql+=" ('"+uuid+"','"+docid+"','"+txfssb.toString()+"' ,'"+txnr+"',str_to_date('"+txxxsj+"', '%Y-%m-%d %H:%i'),'"+userid+"', now())";sqlList.add(insertSql);}    }else{String uuid = UUID.randomUUID().toString(); String insertSql="INSERT INTO tlk_"+y+m+"_txgz VALUES";insertSql+=" ('"+uuid+"','"+docid+"','"+txfssb.toString()+"' ,'"+txnr+"',str_to_date('"+txxxsj+"', '%Y-%m-%d %H:%i'),'"+userid+"', now())";sqlList.add(insertSql);    }d++;}m++;}}//每周} else  if("1".equals(txzq)){//提醒日期int txrq=params.getParameterAsInteger("txrq");//年for(int y=nowYear;y<=endYear;y++){int m=nowMounth;if(y!=nowYear){m=1;}while(m<=endMounth){List<Integer> dayList=getWeekOfMonth(y,m,txrq);//日for(int i=0;i<dayList.size();i++)    {   //提醒消息时间String txxxsj=""+y+"-"+m+"-"+dayList.get(i)+" "+txsj;    Calendar txCa = Calendar.getInstance();    //重读提醒    if(cfcs>0){    txCa.setTime(sdf_yyyyMMddHHmm.parse(txxxsj));for(int c=1;c<=cfcs;c++){//将重复间隔加入提醒时间txCa.add(Calendar.MINUTE,cfjg);txxxsj=sdf_yyyyMMddHHmm.format(txCa.getTime());String uuid = UUID.randomUUID().toString(); String insertSql="INSERT INTO tlk_"+y+m+"_txgz VALUES";insertSql+=" ('"+uuid+"','"+docid+"','"+txfssb.toString()+"' ,'"+txnr+"',str_to_date('"+txxxsj+"', '%Y-%m-%d %H:%i'),'"+userid+"', now())";sqlList.add(insertSql);}    }else{String uuid = UUID.randomUUID().toString(); String insertSql="INSERT INTO tlk_"+y+m+"_txgz VALUES";insertSql+=" ('"+uuid+"','"+docid+"','"+txfssb.toString()+"' ,'"+txnr+"',str_to_date('"+txxxsj+"', '%Y-%m-%d %H:%i'),'"+userid+"', now())";sqlList.add(insertSql);    }}m++;}}//每月} else  if("2".equals(txzq)){//提醒日期int txrq=params.getParameterAsInteger("txrq");//年for(int y=nowYear;y<=endYear;y++){int m=nowMounth;if(y!=nowYear){m=1;}while(m<=endMounth){//二月份特殊处理    if(m==2&&txrq>=28){    txrq=28;    }//提醒消息时间String txxxsj=""+y+"-"+m+"-"+txrq+" "+txsj;    Calendar txCa = Calendar.getInstance();    //重读提醒    if(cfcs>0){    txCa.setTime(sdf_yyyyMMddHHmm.parse(txxxsj));for(int c=1;c<=cfcs;c++){//将重复间隔加入提醒时间txCa.add(Calendar.MINUTE,cfjg);txxxsj=sdf_yyyyMMddHHmm.format(txCa.getTime());String uuid = UUID.randomUUID().toString(); String insertSql="INSERT INTO tlk_"+y+m+"_txgz VALUES";insertSql+=" ('"+uuid+"','"+docid+"','"+txfssb.toString()+"' ,'"+txnr+"',str_to_date('"+txxxsj+"', '%Y-%m-%d %H:%i'),'"+userid+"', now())";sqlList.add(insertSql);}    }else{String uuid = UUID.randomUUID().toString(); String insertSql="INSERT INTO tlk_"+y+m+"_txgz VALUES";insertSql+=" ('"+uuid+"','"+docid+"','"+txfssb.toString()+"' ,'"+txnr+"',str_to_date('"+txxxsj+"', '%Y-%m-%d %H:%i'),'"+userid+"', now())";sqlList.add(insertSql);    }m++;}}//每年} else  if("3".equals(txzq)){//提醒日(年月日 每年和固定时限用)String txsjyy=(String) params.getParameter("txr");//年for(int y=nowYear;y<=endYear;y++){    Calendar txCa = Calendar.getInstance();    txCa.setTime(sdf_yyyyMMddHHmm.parse(txsjyy));        int m = txCa.get(Calendar.MONTH) + 1;  //提醒消息时间String txxxsj="";    //重读提醒    if(cfcs>0){for(int c=1;c<=cfcs;c++){//将重复间隔加入提醒时间txCa.add(Calendar.MINUTE,cfjg);txxxsj=sdf_yyyyMMddHHmm.format(txCa.getTime());String uuid = UUID.randomUUID().toString(); String insertSql="INSERT INTO tlk_"+y+m+"_txgz VALUES";insertSql+=" ('"+uuid+"','"+docid+"','"+txfssb.toString()+"' ,'"+txnr+"',str_to_date('"+txxxsj+"', '%Y-%m-%d %H:%i'),'"+userid+"', now())";sqlList.add(insertSql);}    }else{    txxxsj=sdf_yyyyMMddHHmm.format(txCa.getTime());String uuid = UUID.randomUUID().toString(); String insertSql="INSERT INTO tlk_"+y+m+"_txgz VALUES";insertSql+=" ('"+uuid+"','"+docid+"','"+txfssb.toString()+"' ,'"+txnr+"',str_to_date('"+txxxsj+"', '%Y-%m-%d %H:%i'),'"+userid+"', now())";sqlList.add(insertSql);    }}//固定时限}else  if("4".equals(txzq)){//提醒日(年月日 每年和固定时限用)String txsjyy=(String) params.getParameter("txr");    Calendar txCa = Calendar.getInstance();    txCa.setTime(sdf_yyyyMMddHHmm.parse(txsjyy));        int y = nowCa.get(Calendar.YEAR);          int m = txCa.get(Calendar.MONTH) + 1;  //提醒消息时间String txxxsj="";    //重读提醒    if(cfcs>0){for(int c=1;c<=cfcs;c++){//将重复间隔加入提醒时间txCa.add(Calendar.MINUTE,cfjg);txxxsj=sdf_yyyyMMddHHmm.format(txCa.getTime());String uuid = UUID.randomUUID().toString(); String insertSql="INSERT INTO tlk_"+y+m+"_txgz VALUES";insertSql+=" ('"+uuid+"','"+docid+"','"+txfssb.toString()+"' ,'"+txnr+"',str_to_date('"+txxxsj+"', '%Y-%m-%d %H:%i'),'"+userid+"', now())";sqlList.add(insertSql);}    }else{    txxxsj=sdf_yyyyMMddHHmm.format(txCa.getTime());String uuid = UUID.randomUUID().toString(); String insertSql="INSERT INTO tlk_"+y+m+"_txgz VALUES";insertSql+=" ('"+uuid+"','"+docid+"','"+txfssb.toString()+"' ,'"+txnr+"',str_to_date('"+txxxsj+"', '%Y-%m-%d %H:%i'),'"+userid+"', now())";sqlList.add(insertSql);    }}dataSourceProcess.createOrUpdate(sjy, sqlList, applicationID);}/** * 获取某年某月有多少天 * @param year * @param month * @return */public int getDayOfMonth(int year,int month){Calendar c = Calendar.getInstance();c.set(year, month, 0); //输入类型为int类型return c.get(Calendar.DAY_OF_MONTH);}  /**   * 获取数据类型   * @param object   * @return   */  public static String getType(Object object){String typeName=object.getClass().getName();int length= typeName.lastIndexOf(".");String type =typeName.substring(length+1);return type;}  /**   * 获取某年某月星期几有哪几天   * @param year   * @param month   * @param week   * @return   */  public List<Integer> getWeekOfMonth(int year,int month,int week){  Calendar c1 = Calendar.getInstance(); c1.set(Calendar.YEAR, year); c1.set(Calendar.MONTH, month-1); c1.set(Calendar.DAY_OF_MONTH, 1); int fistDayOfWeek =c1.get(Calendar.DAY_OF_WEEK)-1; int allDays = c1.getActualMaximum(Calendar.DAY_OF_MONTH);   List<Integer> dayList=new ArrayList<Integer>() ; int day= 0; for(int i=0;i<5;i++){    day = 1+(week-fistDayOfWeek)+i*7;    if(day<1 || day >allDays){    continue;    }    dayList.add(day); } return  dayList;  }}

原创粉丝点击