2014-01-31 3 views
1

Я застрял в этой проблеме последние два дня. Моя проблема такова: как я могу отображать дату от одной недели до другой недели (с четверга по четверг)? Например:Android Отобразить дату с одной недели до другой, как (с четверга по четверг)

1/30/2014 to 2/6/2014 

или

30 jan 2014 to 6 feb 2014 

когда неделя завершена, то это изменится, как:

2/6/2014 на 2/13/2014

или

6 фев 2014 до 13 фев 2014

Любая помощь или образец кода будут высоко оценены.

ответ

0

Наконец я получил решение и решить мою проблему:

in thecreate:

TextView tv_chart_menuvotes = (TextView) findViewById(R.id.tv_chart_menuvotes); 
String csPrevThur = getPreviousThursday(); 
    String csNextThur = getNextThursday(); 
    tv_chart_menuvotes.setText("Vote from " + csPrevThur + " To "+ csNextThur); 

вне OnCreate:

public String getPreviousThursday() { 
    String csDate = ""; 
    int perSut = 0; 
    Calendar calendar = Calendar.getInstance(); 
    int day = calendar.get(Calendar.DAY_OF_WEEK); 

    switch (day) { 
    case Calendar.SUNDAY: 
     perSut = -3; 
     break; 
    case Calendar.MONDAY: 
     perSut = -4; 
     break; 
    case Calendar.TUESDAY: 
     perSut = -5; 
     break; 
    case Calendar.WEDNESDAY: 
     perSut = -6; 
     break; 
    case Calendar.THURSDAY: 
     perSut = 0; 
     break; 
    case Calendar.FRIDAY: 
     perSut = -1; 
     break; 
    case Calendar.SATURDAY: 
     perSut = -2; 
     break; 
    } 

    SimpleDateFormat mDF = new SimpleDateFormat("dd-MM-yyyy"); 
    calendar.add(Calendar.DAY_OF_MONTH, perSut); 
    csDate = mDF.format(calendar.getTime()); 

    System.out.println("Prev Thursday >> " + csDate); 

    return csDate; 
} 

public String getNextThursday() { 
    String csDate = ""; 
    int perSut = 0; 
    Calendar calendar = Calendar.getInstance(); 
    int day = calendar.get(Calendar.DAY_OF_WEEK); 

    switch (day) { 
    case Calendar.SUNDAY: 
     perSut = 4; 
     break; 
    case Calendar.MONDAY: 
     perSut = 3; 
     break; 
    case Calendar.TUESDAY: 
     perSut = 2; 
     break; 
    case Calendar.WEDNESDAY: 
     perSut = 1; 
     break; 
    case Calendar.THURSDAY: 
     perSut = 7; 
     break; 
    case Calendar.FRIDAY: 
     perSut = 6; 
     break; 
    case Calendar.SATURDAY: 
     perSut = 5; 
     break; 
    } 

    SimpleDateFormat mDF = new SimpleDateFormat("dd-MM-yyyy"); 
    calendar.add(Calendar.DAY_OF_MONTH, perSut); 
    csDate = mDF.format(calendar.getTime()); 

    System.out.println("NextThursday >> " + csDate); 

    return csDate; 
} 
+0

Приятно, что это решит мою проблему. –

0

В вашем случае setMaxDate() является вашим другом. Документы говорят:

Устанавливает максимальную дату, поддерживаемые данные DatePicker в миллисекундах с 1 января 1970 г. 00:00:00 в getDefault() часовой пояс.

Итак, на следующей неделе получите long и воспользуйтесь этим методом.

Посмотрите здесь Set Limit on the DatePickerDialog in Android?

1

попробовать это,

String start_date = "01-30-2014"; // Start date 
        SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); 
        Calendar cal = Calendar.getInstance(); 
        try { 
         c.setTime(sdf.parse(start_date)); 
        } catch (ParseException e) { 
         e.printStackTrace(); 
        } 
        cal.add(Calendar.DATE, 7); // number of days to add,in your case its 7 
        SimpleDateFormat sdf1 = new SimpleDateFormat("dd-MM-yyyy"); 
        String to_date = sdf1.format(cal.getTime()); 

На самом деле я не люблю андроида календарь (я предпочитаю Joda-Time), но выше решение должно работать для вас

+0

Прошу прощения, как это связано с 'Android'? =) –

+0

Я говорю о экземпляре календаря, используемом в коде, API календаря очень запутан. – dd619

+0

Ну, вы могли бы написать свой ответ, чтобы дополнить мое, показывая OP, как получить время следующей недели как 'long' =) –

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