需求是: 每一年分4个季度进行统计,即如2008-01-01 到 2008-03-31 为第一季度,2008-04-01 到2008-06-30 为第二季度。现在要按每个季度进行周个数统计和每周的日期范围统计,每个季度的第一周的第一个星期日为第一周的结束。
即如2008-01-01(星期2) 到 2008-01-06(星期日) 为第一周,第二周则从2008-01-07(星期1)到2008-01-06(星期天)为第二周。注意每个季度的最后一周的日期不能大于该季度的最后一天,即第一季度的最后一周应该是只有2008-03-31 这一天。
请问如何提供一个年份和季度,计算出该季度的周的个数,以及每周的时间范围,即给出2008年,第一季度,算出有14周,第一周是2008-01-01 到 2008-01-06。
up下
主要是利用java.util.Calendar类,按季度划分,一般是知道一个季度的最后一个天,
如:3-31为第一季度最后一天,先构建这个时间的Calendar对象,使用此对象的.get(WEEK_OF_YEAR)方法就可以得到第一季度有几周了,2,3,4季度可以在此基础上减去上一季度的周数就是本季度的了对于取周的第1和7天使用c.set(Calendar.WEEK_OF_YEAR,上季度总周数+季度周数)
如:2季度第3周,即可使用c.set(Calendar.WEEK_OF_YEAR,14+3),就是将你的日期设置为你那一周的星期一了,星期天就用add方法,但是值得注意的是,这样设置的日期,是按周来算的,每次都会设置为本周的星期一(和设置有关系),如:2008的第一周,日期为2007-12-31,这个你要注意处理好.我说的希望对你有用!~如果认为还行,请为我加点分!
String date1=time1+"-1";
System.out.println(date1); //结果就是2008-05-1
String date2=Data.dateadd("M",date1,1); //意思是指在2008-05-1的月份基础上+1个月
System.out.println(date2); //结果就是2008-06-1
String date2=Data.dateadd("D",date2,-1); //意思是直在2008-06-1的基础之上-1天
System.out.println(date2); //结果是2008-5-31你可以根据我的提示对自己想做的季度进行划分,这个应该属于一个区间性日期查询
给定季度查询应该是 第一季度从 XX年1月1日- 到 XX年 3月31日 第一季度的一周 到 XX周!
第二季度。。
按照我给的例子你自己做一个试验我想结果不会太难吧
代码给你看看 参考一下吧public static List<String> getAllWeekOfMonth(String year,String month){
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
String last=Common.getLastDayOfMonth(Integer.parseInt(year), Integer.parseInt(month));
List<String> timeList=new ArrayList<String>();
//一个星期的毫秒数
long time=7*3600*24*1000;
try {
//一个月开始
Date firstDay=format.parse(year+"-"+month+"-01");
//月的最后一天
Date lastDay=format.parse(last);
//最后一天的毫秒
long endmonth=lastDay.getTime();
Calendar calendar=Calendar.getInstance();
//得到月开始的那天所在周的周一日期
calendar.setTime(firstDay);
calendar.set(Calendar.DAY_OF_WEEK,2);
Date monday=calendar.getTime();
String mon=format.format(monday);
// 得到月开始的那天所在周的周日日期
calendar.set(Calendar.DAY_OF_WEEK,1);
Date sunday=calendar.getTime();
//由于系统要求一周是从周一开始周日结束 所以得到下周的周日
calendar.setTimeInMillis(sunday.getTime()+time);
sunday=calendar.getTime();
String sun=format.format(calendar.getTime());
timeList.add(mon+","+sun);
//循环得到本月的周
for (int i =0; i < 6; i++) {
calendar.setTimeInMillis(monday.getTime()+time);
monday=calendar.getTime();
mon=format.format(monday);
calendar.setTimeInMillis(sunday.getTime()+time);
sunday=calendar.getTime();
sun=format.format(sunday);
if(monday.getTime()<=endmonth){
timeList.add(mon+","+sun);
}else{
break;
}
}
} catch (ParseException e) {
e.printStackTrace();
}
return timeList;
}