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());
}
}
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());
}
}