2016-10-02 4 views
0

Я хочу получить дату определенного дня в течение определенной недели, указанной по номеру недели.Как получить дату определенного дня за определенную неделю

Вот пример:

Сегодня понедельник (03.10.2016), и это неделя с номером 58. Теперь я хочу, чтобы получить дату, например, Пятница этой недели.

Я использую Joda-Time в своем приложении для Android.

В настоящее время ям создает локальную дату.

// This is the date of today 
private LocalDate reportDate = new LocalDate(); 

// The number of the week is calculated here 
int week = Weeks.weeksBetween(startDate.dayOfWeek().withMinimumValue().minusDays(1), 
     reportDate.dayOfWeek().withMaximumValue().plusDays(1)).getWeeks(); 

switch(day_of_week) { 
    case "Monday": 
     // Get date of this day in current week 
     break; 
    case "Tuesday": 
     // Get date of this day in current week 
     break; 
    // ... 
+0

Непонятно, как номер недели влияет на расчет. Если дата отчета - 3 октября, а day_of_week - вторник, предположительно, ответ будет 4 октября, независимо от того, какой номер недели? Также вам интересно, что в местах первого дня недели не понедельника? –

ответ

1

Вы можете использовать следующий код для достижения дней по желанию,

LocalDateTime yourDate = LocalDateTime.now(); 
    System.out.println(yourDate.getWeekOfWeekyear()); 
    int weekOfyear = yourDate.getWeekOfWeekyear(); 
    //Fetch Week Start Date for Given Week Number 
    DateTime weekStartDate = new DateTime().withWeekOfWeekyear(weekOfyear); 
    System.out.println(weekStartDate.toString()); 
    //Fetch Specific Days for given week 
    DateTime wedDateTime = weekStartDate.withDayOfWeek(DateTimeConstants.WEDNESDAY); 

Я надеюсь, что это ответ на ваш запрос.

1

Согласно моему пониманию вашего требования я реализованный ниже коды, просто проверить, если это поможет вам,

Первого Импорта календарь Пакет как ниже

import java.util.Calendar; 

Теперь Создание ниже функций

public String getSpecificDate(int weekOfYear, int dayOfWeek) 
{  

    Calendar cal = Calendar.getInstance(); 

    cal.set(Calendar.WEEK_OF_YEAR, weekOfYear); 
    cal.set(Calendar.DAY_OF_WEEK, dayOfWeek); 

    int year = cal.get(Calendar.YEAR); 
    int month = cal.get(Calendar.MONTH);  // 0 to 11 
    int day = cal.get(Calendar.DAY_OF_MONTH); 

    String selectedDate = " " + day + "-" + (month+1) + "-" + year; 
    return selectedDate; 
} 

// I have passed getSpecificDate(41, 6) and get 7-10-2016 as output 
Смежные вопросы