日期的计算, 本帖最后由 liuc0317 于 2011-03-07 09:12:58 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 /** * 如果当前日期是周六,返回上个月所有的周六的日期 * 如果当前日期是周日,返回上个月所有的周日的日期 * 如果当前日期是工作日,返回上个月的所有的工作日的日期 * @param today 当前日期 * @return 返回日期的列表 */public List<Date> getLastMonthDate(Date today){ List<Date> list = new ArrayList<Date>(); Calendar calendar = Calendar.getInstance(); calendar.setTime(today); calendar.add(Calendar.DAY_OF_YEAR, -1); list.add(calendar.getTime()); int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); calendar.add(Calendar.MONTH, -1); calendar.set(Calendar.DAY_OF_MONTH, 1); Date startTime = calendar.getTime(); calendar.add(Calendar.MONTH,1); calendar.add(Calendar.DAY_OF_YEAR,-1); Date endTime = calendar.getTime(); while(endTime.getTime()>=startTime.getTime()){ calendar.setTime(startTime); if(dayOfWeek==1){ if(calendar.get(Calendar.DAY_OF_WEEK)==1){ list.add(startTime); } }else if(dayOfWeek==7){ if(calendar.get(Calendar.DAY_OF_WEEK)==7){ list.add(startTime); } }else if(dayOfWeek<7&&dayOfWeek>1){ if(calendar.get(Calendar.DAY_OF_WEEK)<7&&calendar.get(Calendar.DAY_OF_WEEK)>1){ list.add(startTime); } } calendar.add(Calendar.DAY_OF_MONTH, 1); startTime = calendar.getTime(); } //System.out.println(list); return list; }照着改一下就ok String begin="2010-01-01"; String end="2010-02-12"; SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd"); Date dBegin=f.parse(begin); Date dEnd=f.parse(end); for(long i=dBegin.getTime();i<=dEnd.getTime();i+=86400000*2){ Date d=new Date(i); String date=f.format(d); System.out.println(date); } 2L做的可能是不满足你的需求 不过我建议你用Calendar自己写 而不是这种方式 紧急求救,注解项目架构,访问actions的时候出现以下错误 struts路径问题 上传和下载组件 用spring 提供的类 实现outlook邮件功能 急!!!!!!! 关于commons-fileupload-1.0上传文件的问题 jboss 问题,在线等答案,急呀!!! tomcat连接mysql使用连接池的小问题?!高手来看看 帮帮忙,撞上鬼了? 大家快看,好奇怪的问题! java在linux保存文件文件名乱码 【求助】统计网页上的信息 struts1的过滤器,过滤全站乱码抛个异常,会的帮忙解决
/**
* 如果当前日期是周六,返回上个月所有的周六的日期
* 如果当前日期是周日,返回上个月所有的周日的日期
* 如果当前日期是工作日,返回上个月的所有的工作日的日期
* @param today 当前日期
* @return 返回日期的列表
*/
public List<Date> getLastMonthDate(Date today){
List<Date> list = new ArrayList<Date>();
Calendar calendar = Calendar.getInstance();
calendar.setTime(today);
calendar.add(Calendar.DAY_OF_YEAR, -1);
list.add(calendar.getTime());
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
calendar.add(Calendar.MONTH, -1);
calendar.set(Calendar.DAY_OF_MONTH, 1);
Date startTime = calendar.getTime();
calendar.add(Calendar.MONTH,1);
calendar.add(Calendar.DAY_OF_YEAR,-1);
Date endTime = calendar.getTime();
while(endTime.getTime()>=startTime.getTime()){
calendar.setTime(startTime);
if(dayOfWeek==1){
if(calendar.get(Calendar.DAY_OF_WEEK)==1){
list.add(startTime);
}
}else if(dayOfWeek==7){
if(calendar.get(Calendar.DAY_OF_WEEK)==7){
list.add(startTime);
}
}else if(dayOfWeek<7&&dayOfWeek>1){
if(calendar.get(Calendar.DAY_OF_WEEK)<7&&calendar.get(Calendar.DAY_OF_WEEK)>1){
list.add(startTime);
}
}
calendar.add(Calendar.DAY_OF_MONTH, 1);
startTime = calendar.getTime();
}
//System.out.println(list);
return list;
}照着改一下就ok
String begin="2010-01-01";
String end="2010-02-12";
SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd");
Date dBegin=f.parse(begin);
Date dEnd=f.parse(end);
for(long i=dBegin.getTime();i<=dEnd.getTime();i+=86400000*2){
Date d=new Date(i);
String date=f.format(d);
System.out.println(date);
}
2L做的可能是不满足你的需求 不过我建议你用Calendar自己写 而不是这种方式