android - 如何在 TimePickerAndroid 中为 react native 设置最短日期

标签 android reactjs react-native android-timepicker

我使用react-native创建了一个简单的表单 library与开始时间和结束时间。 我在问自己为什么我可以在ios上毫无问题地设置开始时间和结束时间,但当我在official documentation中找到时却无法在android中设置它它不是预期的最短时间选项。 是否存在解决此问题的任何解决方法或一些技巧?
该代码与示例中的代码非常相似,因此我没有提供它,但在这种情况下我可以编辑消息。 谢谢

最佳答案

根据文档,对于react-native-datepicker,Android不支持minDate。它在 ios 上运行良好。

注意:使用 prop 模式的“datetime”值。

我按照下面的方法解决了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
                            })
                          }
                        }

                      }
                        }

                    />

希望对你有帮助!!

关于android - 如何在 TimePickerAndroid 中为 react native 设置最短日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49999476/

相关文章:

android - 使用 android 数据绑定(bind)单击按钮时的方法调用(已在 fragment 中定义)不起作用。?

java - Appium startActivity() 函数

ios - 如何为 iOS 指定特定的模拟器?

react-native - Expo.FileSystem.downloadAsync不显示下载通知

android - 是否可以使用 Robolectric 进行集成测试?

javascript - 将动态 onChange 监听器传递给 child

javascript - 从 React 组件中的脚本访问变量

javascript - 如何注册 Service Worker?

javascript - react native : Background Image not being shown

Android 使用 gdata 将视频上传到 youtube?