Как установить минимальную дату в TimePickerAndroid для реакции

Я создал простую форму с помощью react-native, используя эту библиотеку со временем начала и временем окончания. Я спрашивал себя, почему я могу без проблем установить время начала и время окончания на ios, но я не могу установить его в android, когда я нашел в официальная документация, что параметр минимального времени не ожидается. Существует ли обходной путь или какой-то хак для решения этой проблемы?
Код настолько похож на тот, что в примере, поэтому я его не привожу, но на всякий случай могу отредактировать сообщение. Спасибо


person michoprogrammer    schedule 24.04.2018    source источник
comment
Попробуйте следующую библиотеку, она работает как на Android, так и на iOS, и вы можете легко установить минимальную дату в средстве выбора даты, github.com/mmazzarolo/react-native-modal-datetime-picker   -  person Patrick R    schedule 25.04.2018
comment
Хорошо, я попробую, как только смогу! Спасибо   -  person michoprogrammer    schedule 26.04.2018
comment
@PatrickR, минимальная дата работает, а минимальное время - нет, поэтому проблема не решена. Есть ли у вас какие-либо рекомендации?   -  person michoprogrammer    schedule 01.05.2018
comment
Вы пытались установить время в своем объекте minDate?   -  person Patrick R    schedule 02.05.2018
comment
Конечно! Минимальная дата работает отлично, минимальное время - нет. Если я установлю минимальную дату, например, 02.05.2018, я не смогу установить дату раньше этого дня. Если я установлю минимальное время 09:30, я могу установить 08:00, и мне не нужно такое поведение. В библиотеке, которую вы сказали, вы можете прочитать эту дату MinimumDate - Min Date. Не работает с выбором времени на Android.   -  person michoprogrammer    schedule 02.05.2018
comment
Я пытаюсь сказать, что в вашем средстве выбора времени попробуйте установить объект minDate как текущую дату + минимальное время, которое вы хотите предоставить. В соответствии с вашим примером вы должны установить Date d = new Date(); д.setHours (09); d.setMinutes(30); а затем добавьте дату d к MinimumDate   -  person Patrick R    schedule 02.05.2018


Ответы (1)


Согласно документации, для react-native-datepicker minDate не поддерживается для Android. На ios работает нормально.

Примечание. Используйте значение datetime для режима prop.

Я следовал приведенному ниже методу, чтобы решить проблему в android.

                    <DatePicker
                      style={{width: 200}}
                      date={this.state.valueDate}
                      mode="datetime"
                      format="YYYY/MM/DD HH:mm"
                      minDate={new Date(Date.now()+(10 * 60 * 1000))}   //To book after 10 minutes
                      confirmBtnText="Confirm"
                      cancelBtnText="Cancel"
                      customStyles={{
                        dateIcon: {
                          position: 'absolute',
                          left: 5,
                          top: 4,
                          marginLeft: 10
                        },
                        dateInput: {
                          marginLeft: 46
                        }
                        // ... You can check the source to find the other keys.
                      }}
                      onDateChange={(date) => {   // returns 2019-10-15T23:23 - set in format prop
                        var selectedDate = new Date(date);
                        var dateNow = new Date();
                        var YYYY = dateNow.getFullYear();
                        var MM = dateNow.getMonth()+1;
                        var DD = dateNow.getDate();
                        var HH = dateNow.getHours();
                        var mm = dateNow.getMinutes()+10;   //To book after 10 minutes
                        var minDate = new Date(YYYY+'/'+MM+'/'+DD+' '+HH+':'+mm)

                        var selectedYYYY = selectedDate.getFullYear();
                        var selectedMM = selectedDate.getMonth()+1;
                        var selectedDD = selectedDate.getDate();
                        var selectedHH = selectedDate. getHours();
                        var selectedmm = selectedDate.getMinutes();

                        if(Platform.OS == 'ios'){
                          this.setState({
                            valueDate:date,
                            date: selectedYYYY+'-'+selectedMM+'-'+selectedDD,
                            time: selectedHH+':'+selectedmm
                          })
                        }else{
                          if(selectedDate.getTime()<minDate.getTime()){   //getTime() - Get the time (milliseconds since January 1, 1970)
                            alert("You can book after 10 minutes from now!");
                          }else{
                            this.setState({
                              valueDate:date,
                              date: selectedYYYY+'-'+selectedMM+'-'+selectedDD,
                              time: selectedHH+':'+selectedmm
                            })
                          }
                        }

                      }
                        }

                    />

Надеюсь поможет!!

person Angathan Nesarasa    schedule 15.10.2019