获取年度周数和每个周的开始时间和结束时间

来源:互联网 发布:淘宝流量如何提升 编辑:程序博客网 时间:2024/05/16 01:34
package com.mecool.swmp.util;


import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;


public class WeeksUtil {


/**
     * 获取某年某周的起始时间和结束时间
     * 
     * @param year
     * @param weekindex
     * @return
     */
    public static String[] getDayOfWeek(int year, int weekindex) {
        SimpleDateFormat sdf = new SimpleDateFormat("MM-dd");
        Calendar c = Calendar.getInstance();
        c.setWeekDate(year, weekindex, 1);
 
        int dayOfWeek = c.get(Calendar.DAY_OF_WEEK) - 2;
        c.add(Calendar.DATE, -dayOfWeek); // 得到本周的第一天
        String begin = sdf.format(c.getTime());
        c.add(Calendar.DATE, 6); // 得到本周的最后一天
        String end = sdf.format(c.getTime());
        String[] range = new String[2];
        range[0] = begin;
        range[1] = end;
        return range;
    }
    
    /**
     * 获取指定年份的总周数
     * @param date
     * @return
     * @throws Exception
     */
public static int getYearWeek (String date) throws Exception { 
SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
Date s = sdf.parse(date);
Calendar ca = Calendar.getInstance();
ca.setTime(s);
ca.setFirstDayOfWeek(Calendar.MONDAY);
int weeks = ca.getActualMaximum(Calendar.WEEK_OF_YEAR);
return weeks;
}
    /**
     * 页面调用select周数集合
     * @return
     * @throws Exception
     */
public static List<CodeNameKv> getAllWeeksAndDates() throws Exception{
List<CodeNameKv> codeNameKvList =new ArrayList<CodeNameKv>();
SimpleDateFormat df = new SimpleDateFormat("yyyy");//设置日期格式
Integer curYear = Integer.valueOf(df.format(new Date()));
//遍历当前年份及之后的年份到05年结束
for(int i=curYear;i>2007;i--){
//获取年的总周数
int weeksOfyearTotal = WeeksUtil.getYearWeek(String.valueOf(i));
//当前日期所在多少周
int weeksOfyearCurDate = Calendar.getInstance().get(Calendar.WEEK_OF_YEAR);
//排除当前时间以后具体周总数
int weeks;
if(curYear==i){
weeks=weeksOfyearCurDate;
}else{
weeks=weeksOfyearTotal;
}
//遍历本年度所有周数
for(int j=weeks;j>=1;j--){
//获取某年,某周的开始日期和结束日期
String[] str = WeeksUtil.getDayOfWeek(i,j);
String weekStart = str[0];
String weekEnd = str[1];
String code=i+"-"+weekStart+"&"+i+"-"+weekEnd;
String name=i+"年"+j+"周"+"("+weekStart+"/"+weekEnd+")";
CodeNameKv kv=new CodeNameKv(code, name);
codeNameKvList.add(kv);
}
}
return codeNameKvList;
}
public static void main(String[] args) throws Exception {

List<CodeNameKv> list = WeeksUtil.getAllWeeksAndDates();
System.out.println(list.size());
}


}
0 0
原创粉丝点击