从android的周数和年份中获取星期的开始日期和结束日期

问题描述:

我希望获得开始日期&结束日期为一周的数字,以传递给方法的一周数。例如,如果我通过了周数为51和一年2011,它应该回到我开始日期为18 Dec 2011和结束日期为24 Dec 2011从android的周数和年份中获取星期的开始日期和结束日期

是否有任何的方法,这将有助于我实现这一目标?

+0

我试过使用MonthDisplayHelper&JodaTime,但不知何故无法达到要求。 Thanx Sunil&Chase ..会尝试我们的解决方案,让你知道 – AndroidGuy 2011-12-28 07:00:39

您可以用下面的方法来获得一个星期

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); 
    } 
+0

2015年,2016年来一个星期多,但2013,2014来到正是...这是闰年的问题.. – 2013-01-29 12:41:44

+0

您好Kamal,任何解决方案以上提到的问题? – Deva 2015-12-28 09:21:00

您需要使用java.util.Calendar类的第一日期和结束日期。您可以使用public void set(int field, int value)方法将年份设置为Calendar.YEAR,并将年份设置为Calendar.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();