在Android中,如何从周数和年份获取该周的开始和结束日期?

7

我希望能够获取一周的开始日期和结束日期,需要传入一周的数字和年份。例如,如果我传递的周数为 51 ,年份为 2011,它应该返回开始日期为2011年12月18日,结束日期为2011年12月24日

是否有任何方法可以帮助我实现这个功能?


我尝试使用MonthDisplayHelper和JodaTime,但不知何故未能达到所需目标。感谢Sunil和Chase..我会尝试您的解决方案并告知您。 - AndroidGuy
2个回答

20

您可以使用以下方法获取一周的第一天和最后一天

 void getStartEndOFWeek(int enterWeek, int enterYear){
//enterWeek is week number
//enterYear is year
        Calendar calendar = Calendar.getInstance();
        calendar.clear();
        calendar.set(Calendar.WEEK_OF_YEAR, enterWeek);
        calendar.set(Calendar.YEAR, enterYear);

        SimpleDateFormat formatter = new SimpleDateFormat("ddMMM yyyy"); // PST`
        Date startDate = calendar.getTime();
        String startDateInStr = formatter.format(startDate);
        System.out.println("...date..."+startDateInStr);

        calendar.add(Calendar.DATE, 6);
        Date enddate = calendar.getTime();
        String endDaString = formatter.format(enddate);
        System.out.println("...date..."+endDaString);
    }

2015年、2016年比2013年、2014年多一周...这是闰年的问题吗?请问。 - kamal_tech_view
嗨,Kamal,以上提到的问题有解决方案吗? - Deva

3
你需要使用java.util.Calendar类。你可以使用public void set(int field, int value)方法设置年份和周数分别为Calendar.YEARCalendar.WEEK_OF_YEAR
只要区域设置正确,你甚至可以使用setFirstDayOfWeek更改每周的第一天。由日历实例表示的日期将是你的开始日期。只需添加6天即可得到结束日期。
Calendar calendar = new GregorianCalendar();
// Clear the calendar since the default is the current time
calendar.clear(); 
// Directly set year and week of year
calendar.set(Calendar.YEAR, 2011);
calendar.set(Calendar.WEEK_OF_YEAR, 51);
// Start date for the week
Date startDate = calendar.getTime();
// Add 6 days to reach the last day of the current week
calendar.add(Calendar.DAY_OF_YEAR, 6);
// End date for the week
Date endDate = calendar.getTime();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接