反应本机datepicker仅在调试模式下有效

时间:2018-07-08 18:22:15

标签: react-native

我在React Native应用中使用native datepicker of android,仅当我使用调试模式时才获得日期,但是当我使用真实电话取消调试模式时,我会收到警报'无效日期' >与调试选择的日期相同。

  showDatePicker = async () => {
    if (Platform.OS === 'ios') {
        this.setState({ datePickerIosPlatform: true })
    } else {
        try {
            const { action, year, month, day } = await DatePickerAndroid.open({
                date: new Date()
            });
            if (action !== DatePickerAndroid.dismissedAction) {
               console.log('action', action, 'year', year, ' month', month, 'day', day)

                var stringDate = `${year} ${month} ${day}`;
                var newDate = new Date(stringDate)
                alert(newDate)

                var convertDate = moment(newDate).format('DD.MM.YYYY') 
                console.log('convertdata',convertDate)

                // this.convertDate(stringDate)
            }
        } catch ({ code, message }) {
            console.warn('Cannot open date picker', message);
        }
    }

}

1 个答案:

答案 0 :(得分:0)

今天我遇到了类似的问题(并解决了!)

我尝试生成给定字符串(德国日期格式)new Date("06.06.2020")的日期对象。之后,我尝试将生成的日期与今天new Date()进行比较。

由于它在“调试模式”下运行良好,因此在捆绑的Release APK上不起作用。我也收到了invalid Date-条消息,

解决方案

我发现,您必须具有完全合格的ISO_8601格式的字符串才能生成日期。

因此,我执行以下操作以将日期转换为ISO_8601格式:

const startNextFestival = "06.10.2020".split('.').reverse().join('-')+"T10:00:00.000Z";
const nextFestival = new Date(startNextFestival);

这将为startNextFestival生成以下日期字符串:“ 2020-06-06T10:00:00.000Z” 这样,它就像一种魅力一样产生。

希望对别人有帮助。