Дата отображения Android с одной недели на другую, например (с четверга по четверг)

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

1/30/2014 to 2/6/2014

or

30 jan 2014 to 6 feb 2014 

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

2/6/2014 to 2/13/2014

or

с 6 февраля 2014 г. по 13 февраля 2014 г.

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


person Farhan Shah    schedule 31.01.2014    source источник


Ответы (3)


попробуй это,

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()); 

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

person dd619    schedule 31.01.2014
comment
Извините, как это связано с Android ? знак равно - person An SO User; 31.01.2014
comment
Я говорю об экземпляре календаря, используемом в коде, API календаря очень сбивает с толку. - person dd619; 31.01.2014
comment
Ну, вы могли бы написать свой ответ, чтобы дополнить мой, показав ОП, как получить время следующей недели как long =) - person An SO User; 31.01.2014
comment
ну, я не знаю насчет setMaxDate(), но мы можем установить любую дату в экземпляр календаря и получить время в миллисекундах как long MiliTime=cal.getTimeInMillis(). - person dd619; 31.01.2014
comment
Вот тогда, бро! Возврат cal.getTimeInMillis() передается setMaxDate(). Хорошо, как сделано! знак равно - person An SO User; 31.01.2014

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

при создании:

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;
}
person Farhan Shah    schedule 10.02.2014

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

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

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

Посмотрите здесь Установить ограничение на DatePickerDialog в Android?

person An SO User    schedule 31.01.2014