Выбор даты для Android

#java #android #xml

#java #Android #xml

Вопрос:

Я реализовал выбор даты в Android Studio, но я хочу внести некоторые изменения. Я хочу сделать недоступными даты до сегодняшнего дня и все воскресенья, и хочу сделать первую выбранную дату как минимум через 3 дня после текущего дня. Например, если сегодня пятница, я хочу, чтобы первым выбранным днем была среда (так как воскресенье не выбирается). Как это реализовать?

xml:

    <DatePicker
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@ id/dpTake"
        android:textColor="@android:color/white"
        android:layout_gravity="center_horizontal" />
  

java:

 private DatePicker dpTake;
dpTake=(DatePicker) rootView.findViewById(R.id.dpTake);
    int day=dpTake.getDayOfMonth();
    int month=dpTake.getMonth();
    int year=dpTake.getYear();
        String dateTake = String.valueOf(year) "-" String.valueOf(month) "-" String.valueOf(day);
        order.setDate_take(dateTake);
  

Ответ №1:

 datePicker.setMinDate(value);
  

В этой строке будет установлена минимальная дата. Теперь значение будет:

 long value = ((day   3) * convert_to_milliseconds) -System.currentTimeMillis();
  

Вы преобразовали 3 дня с сегодняшнего дня в миллисекунды (однако, если вы вводите данные в 7 часов утра, 3 дня будут засчитаны в 7 часов утра 3 дня спустя, выполните некоторое программирование, если хотите исправить в 12 часов ночи!).

Приветствия!

Перередактировать: Это может сработать>

 if (choosenDate.get(Calendar.DAY_OF_WEEK) == 
                Calendar.SUNDAY) {

        <  ..... Toast or SnackBar etc! ...... >

            }
  

Комментарии:

1. Большое вам спасибо! и как сделать воскресенье недоступным? или, по крайней мере, когда кто-то выбирает воскресенье, всегда отображать тост или сообщение, чтобы выбрать другой день и вернуть выбранное значение к предыдущей выбранной дате?

2. @AndrewT, это помогает?

3. в любом случае я не могу сделать воскресенье недоступным

4. Я хочу сделать так, чтобы, если выбрано воскресенье, автоматически сделать понедельник выбранным днем

5. @AndrewT, плохой дизайн. но сделайте, если (выберите дату.получить(Календарь. DAY_OF_WEEK 1)

Ответ №2:

Вы можете попробовать использовать DatePicker.setMinDate() метод. Например Создать Calendar экземпляр:

 Calendar c = Calendar.getInstance();
c.set(Calendar.DAY_OF_MONTH,-3); //-3 means 3 days before.
dpTake.setMinDate(c.getTimeInMillis());