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; }}
阅读全文
0 0
- Java Calendar 类用例(处理时间)
- java-时间处理:Date,DateFomat,Calendar
- java时间处理Calendar使用小记
- Java| 时间日期处理(SimpleDateFormat,Calendar,Date)
- Calendar时间处理
- 时间处理Calendar
- JAVA处理日期时间常用方法: java.util.Calendar
- JAVA处理日期时间常用方法: java.util.Calendar
- java语言基础(63)——日期时间处理方法(Date DateFormat Calendar)
- JAVA处理日期时间常用方法:强大的calendar类
- Java时间日期处理——Date和Calendar
- Java中关于时间的处理 Date SimpleDateFormat Calendar GegorianCalendar
- java 时间的处理类Date与Calendar-详解
- java--获取当前时间(Calendar类)
- java时间用法calendar
- java calendar 时间用法
- Java Calendar 设置时间
- java 时间 Calendar 用法
- 南阳理工OJ915解题报告
- FTPrep, 80 Remove Duplicates from Sorted Array II
- qt 创建插件和使用
- Linux C服务器开发需要注意的问题
- Mybatis使用order by排序使用#无法正确执行的解决之#与$的区别
- Java Calendar 类用例(处理时间)
- 正则表达式教程
- Eclipse 安装Spring Tool Suite(STS)
- mia
- CSS基础3
- ajax解析json字符串
- 接口回调的重要四步
- Ubuntu中一些有趣酷炫的命令o( ̄ヘ ̄o#)
- Android 常用功能模块的一些Demo收集整理