2015-12-28 4 views
0

Мне нужно указать дату начала недели. Выбрав эту неделю (28-12-2015), я получаю «29-12-2014» в качестве даты начала, потому что она рассчитывается на основе недели и года. Сегодняшняя (28-12-2015) неделя я получаю как 1-я неделя. Мне нужно получить последнюю неделю года с датой «27-12-2015» в качестве даты начала.Как получить неделю по дате в java?

Вот мой код:

public Date getStartDate() 
    { 

      int weekNo = findWeekOfTheYear(new Date()); 
      int year = findYear(); 
      startDate = findStartDateUsingWeekAndYear(year, weekNo);   

      return startDate; 
    } 

public int findYear() 
    { 
     Calendar calendar = new GregorianCalendar(); 

      int year= calendar.get(Calendar.YEAR); 

     return year; 
    } 

public int findWeekOfTheYear(Date date) 
    { 
     Calendar calendar = Calendar.getInstance(); 
     calendar.setTime(date); 

      int weekOfMonth= calendar.get(Calendar.WEEK_OF_YEAR); 

     return weekOfMonth; 
    } 

public Date findStartDateUsingWeekAndYear(int year,int week) 
    { 

     Calendar calendar = Calendar.getInstance(); 
     calendar.clear(); 
     calendar.set(Calendar.WEEK_OF_YEAR, week); 
     calendar.set(Calendar.YEAR, year); 

     // Now get the first day of week. 
     Date date = calendar.getTime(); 

     return date; 
    } 

Любая помощь?

+2

Ваш вопрос немного неясно. Каков ваш вклад, каков ожидаемый результат, что он дает вместо этого? Просьба привести дополнительные примеры, которые не совпадают в конце года, если вы считаете, что конец года может быть проблемой здесь. – RealSkeptic

+0

@RealSkeptic Input - это сегодняшняя дата. Сохраняя эту дату ввода, мне нужно получить неделю. Например: Сегодня 28-12-2015.Я ожидаю, что неделя будет 53, но я получаю 1. – 0991

+0

Пожалуйста, найдите StackOverflow перед публикацией. Эта тема была рассмотрена много раз. –

ответ

1

Использование

public Date findStartDateUsingWeekAndYear(int year,int week) 
    { 

    Calendar calendar = Calendar.getInstance(); 

    calendar.set(Calendar.WEEK_OF_YEAR, week); 
    calendar.set(Calendar.YEAR, year+1); 
    calendar.set(Calendar.HOUR_OF_DAY, 0); 
    calendar.set(Calendar.MINUTE, 0); 
    calendar.set(Calendar.SECOND, 0); 
    // Now get the first day of week. 
    Date date = calendar.getTime(); 

    return date; 
} 

Но если вы хотите, чтобы получить первый день текущей недели, используйте

calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); 

вместо

calendar.clear(); 
calendar.set(Calendar.WEEK_OF_YEAR, week); 
calendar.set(Calendar.YEAR, year); 
+0

Я получаю стартовую дату как «27-Dec-2016» вместо «27-Dec-2015» – 0991

+0

Я сказал вам, задайте 'calendar.set (Calendar.YEAR, год + 1);' –

+0

Я добавил вам код , Из-за «calendar.set (Calendar.YEAR, год + 1)»; следующий год показывает дату – 0991

Смежные вопросы