1、获取两个日期之间的日期(包含首尾日期)
public String getStrBetweenDate(String start,String end){
String result="";
try {
//定义日历实例
Calendar calendar = Calendar.getInstance();
//定义起止日期
Date dateStart = null, dateEnd = null;
long endLong=0l,startLong=0l;
//起始日期是否大于终止日期,默认不大于false
boolean flag=false;
//定义格式化日期实例
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//开始日期
dateStart = dateFormat.parse(start);
//结束日期
dateEnd = dateFormat.parse(end);
//判断起始日期是否大于终止日期
flag=dateStart.after(dateEnd);
//给日历赋值
calendar.setTime(dateEnd);
//获得结束日期的毫秒数
endLong = calendar.getTimeInMillis();
//给日历赋值
calendar.setTime(dateStart);
//获得结束日期的毫秒数
startLong = calendar.getTimeInMillis();
//得到两个日期间隔的毫秒数
//用总的间隔毫秒除以一天时间的毫秒,得到间隔天数
int days = 0;
if(flag){
days = new Long((startLong-endLong) / (1000 * 60 * 60 * 24)).intValue();
calendar.setTime(dateEnd);
}else{
days = new Long((endLong-startLong) / (1000 * 60 * 60 * 24)).intValue();
}
calendar.add(Calendar.DAY_OF_YEAR, -1);//日历跳转到上一天
for (int i = 0; i <= days; i++) {
calendar.add(Calendar.DAY_OF_YEAR, 1);//日历跳转到下一天
String day=dateFormat.format(calendar.getTime());
result+="'"+day+"',";
}
result=result.substring(0, result.lastIndexOf(","));
} catch (ParseException e) {
e.printStackTrace();
}catch(Exception ex){
ex.printStackTrace();
}
return result;
}
2、SQL查询时拼接日期
public String prepareDS(String start,String end){
String ds = "";
try {
if ((null == start && null == end)
|| ("".equals(start) && "".equals(end))) {// 没有起止时间,则默认为不拼接查询条件,直接返回空''
return ds;
} else if (null == start || "".equals(start)) {// 起始时间为空的情况下
if (null != end && !"".equals(end)) {
ds = " ds='" + end.substring(0, 10) + "' ";
} else {
return ds;
}
} else if (null == end || "".equals(end)) {//终止时间为空的情况下
if (null != start && !"".equals(start)) {
ds = " ds='" + start.substring(0, 10) + "' ";
} else {
return ds;
}
} else {// 起始时间,终止时间不为空的情况下
ds = " ds in(" + getStrBetweenDate(start, end) + ")";
}
} catch (Exception e) {
e.printStackTrace();
}
return ds;
}