业务中要获得两个时间中间每周二和周三的时间,如果在这两天内,做业务处理
方法如下:
思路:先把这个时间段内的每一天都查出来,放在一个数组中,然后查询每天为礼拜几,如果是礼拜二和礼拜三,则进行业务处理
业务代码:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String zxpbb="3,4"; //设置礼拜二和礼拜三的业务
//获取基本的参数
String xlzxsgh = RequestUtil.getParameterStr(req, "xlzxsgh", "");
String xlzxsxm = RequestUtil.getParameterStr(req, "xlzxsxm", "");
String ksrq = RequestUtil.getParameterStr(req, "ksrq", "");
String jsrq = RequestUtil.getParameterStr(req, "jsrq", "");
String plksrq = RequestUtil.getParameterStr(req, "plksrq", "");
String pljsrq = RequestUtil.getParameterStr(req, "pljsrq", "");
String[] pbxq=zxpbb.getPlxqj().split(",");
if(pbxq.length>0){
for(int i=0;i<pbxq.length;i++){
int pdzj=Integer.valueOf(pbxq[i]);
List<Date> betdate=getBetweenDates(DateUtils.parse(ksrq, "yyyy-MM-dd"),DateUtils.parse(jsrq, "yyyy-MM-dd"));
for(int d=0;d<betdate.size();d++){
Calendar betrq=Calendar.getInstance();
betrq.setTime(betdate.get(d));
int day=betrq.get(Calendar.DAY_OF_WEEK); //获得该日期的星期几
sdf.format(betrq.getTime());
if(day == pdzj){
try {
XXXXXX xx=new XXXXXX();
xx.setXlzxsgh(xlzxsgh);
xx.setXlzxsxm(xlzxsxm);
xx.setXqj(pbxq[i]);
xx.setZdxzrs("1");
xx.setYyyrs("0");
xx.setKssj(new Timestamp(DateUtils.parse(sdf.format(betrq.getTime())+" "+plksrq, "yyyy-MM-dd HH:mm").getTime()));
xx.setJssj(new Timestamp(DateUtils.parse(sdf.format(betrq.getTime())+" "+pljsrq, "yyyy-MM-dd HH:mm").getTime()));
commonService.save(xx);
} catch (Exception e) {
e.printStackTrace();
}
}else{
continue;
}
}
}
业务代码中用到一个方法,是把两个时间中的每一天封装在List中
//获取两个时间中间的每天的日期
public List<Date> getBetweenDates(Date start, Date end) {
List<Date> datelist = new ArrayList<Date>();
Calendar tempStart = Calendar.getInstance();
tempStart.setTime(start);
//tempStart.add(Calendar.DAY_OF_YEAR, 1);//这里可以设置从第二天开始
Calendar tempEnd = Calendar.getInstance();
tempEnd.setTime(end);
while (tempStart.before(tempEnd)) {
datelist.add(tempStart.getTime());
tempStart.add(Calendar.DAY_OF_YEAR, 1);
}
return datelist;
}