int week = Calendar.getInstance().get(Calendar.WEEK_OF_YEAR);//5

解决方案 »

  1.   

    你是要求用java处理还是用数据库处理?数据库处理比较方便
      

  2.   

    前天回复了一个,开始是问输入的几周,然后得到这一周的开始日期和结束日期,后台那个同学又问了和楼主一样的问题,不知道你们是不是同一个人?
    以下是代码,可以参考下
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.GregorianCalendar;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;public class DateUtil { /**
     * @param args
     * @throws ParseException 
     */
    public static void main(String[] args) throws ParseException { //调用,取2015年的第51周的开始日期和结束日期
    Map<String, String> map=getSpecialDates(2015,6,51);
    System.out.println(map);//{startDate=2015-12-18, endDate=2015-12-24}

    //取2015年的当前时间所在的周
    Date date = new Date();
    long paradate = date.getTime();

    int week=getSpecialWeek(2015,6,paradate);
    System.out.println("当前时间所在的周为:"+week);

    }

    /**
     * 取时间所在的周
     * @param year
     * @param startOfweek
     * @param longdate
     * @return
     * @throws ParseException
     */
    public static int getSpecialWeek(int year,int startOfweek,long longdate) throws ParseException{
    SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
    int ret=0;
    Map<Integer, Map<String, String>> map=getYearWeeks(year,startOfweek);
    Iterator<Integer> iterator1=map.keySet().iterator();
    while(iterator1.hasNext()){
    Integer week = iterator1.next();
    Map<String,String> map1=map.get(week);
    String startdate=map1.get("startDate");
    String enddate = map1.get("endDate");
    long l1=sf.parse(startdate).getTime();
    long l2=sf.parse(enddate).getTime();
    if(longdate>=l1&&longdate<=l2){
    ret=week;
    break;
    }
    }
    return ret;
    }

    /**
     * @param year 哪一年的,格式2014、2015这些<br>
     * @param startOfweek 星期几算我们星期的开头,比如星期五,对应的数字就是6,星期四对应的就是5……<br>
     * @param weekIndex 第几周的索引<br>
     * @return 这一周开始日期和结束日期的map<br>
     */
    public static Map<String, String> getSpecialDates(int year, int startOfweek,int weekIndex) {
    Map<Integer, Map<String, String>> map=getYearWeeks(year,startOfweek);
    if(map!=null){
    return map.get(weekIndex);
    }
    return null;
    } /**
     * 获得某一年的所有周数<br>
     * @param year 年份,格式2014、2015<br>
     * @param startOfWeek 星期几算我们星期的开头,比如星期五,对应的数字就是6,星期四对应的就是5……<br>
     * @return  
     */
    public static Map<Integer, Map<String, String>> getYearWeeks(int year,int startOfWeek) {
    SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
    Map<Integer, Map<String, String>> retMap = new HashMap<Integer, Map<String, String>>();
    //定义开始的calendar
    Calendar calendar = new GregorianCalendar();
    calendar.set(Calendar.YEAR, year);
    calendar.set(Calendar.MONTH, 0);
    calendar.set(Calendar.DAY_OF_MONTH, 1);
    //定义结束的calendar
    Calendar calendarEnd = new GregorianCalendar();
    calendarEnd.set(Calendar.YEAR, year);
    calendarEnd.set(Calendar.MONTH, 11);
    calendarEnd.set(Calendar.DAY_OF_MONTH, 31);
    int count=1;
    while (calendar.getTime().getTime() <= calendarEnd.getTime().getTime()) {
    if (calendar.get(Calendar.DAY_OF_WEEK) == startOfWeek) {
    String startDate=sf.format(calendar.getTime());
    calendar.add(Calendar.DAY_OF_MONTH, 6);
    String endDate=sf.format(calendar.getTime());
    if(calendar.YEAR>year){
    break;
    }
    else{
    Map<String,String> innerMap = new HashMap<String,String>();
    innerMap.put("startDate", startDate);
    innerMap.put("endDate", endDate);
    retMap.put(count, innerMap);
    count++;
    }
    }
    else{
    calendar.add(Calendar.DAY_OF_MONTH, 1);
    }
    }
    return retMap;
    }}