如何在React Native中从TimePickerAndroid获取AM / PM

时间:2019-06-24 11:07:51

标签: react-native

我正在使用React Native的TimePickerAndroid并使用12个小时的时间,

因此,它工作正常,并显示AM / PM以供选择,选择器返回了我几小时和几分钟,但是无论如何我都找不到使AM被选中或PM的代码,如下所示。

async showTimePicker() {
    const { action, minute, hour } = await TimePickerAndroid.open({
        is24Hour: false,
    });
    if (action === TimePickerAndroid.dismissedAction) {
        return;
    }
    const selectedTime = `${hour}:${minute}`;
    this.setState({ selectedTime })
}

我只需要知道选择了AMPM一切正常。

official docs供参考。

谢谢。

3 个答案:

答案 0 :(得分:2)

标志仅用于在计时器弹出窗口中向用户显示。一旦用户选择了时间,它将只为您提供24小时格式。如果用户选择“ 2:00 PM”,则返回值为14小时00分钟。在其他任何地方显示时,您都可以转换为AM / PM并显示它。

仅从TimePickerAndroid开始使用24小时格式。

答案 1 :(得分:1)

您可以使用条件来显示AM / PM,在这里我为您添加了一个示例代码段。斯里拉曼的回答也解释了使用这种方法。

async showTimePicker() {

var { action, minute, hour } = await TimePickerAndroid.open({      
  is24Hour: false,
});


if (action === TimePickerAndroid.dismissedAction) {
    return;
}
// setting AM/PM and hour to 12 by checking condition
let am_pm = 'AM';

if(hour>11){
  am_pm = 'PM';
  if(hour>12){
    hour = hour - 12;
  }
}

if(hour == 0){
  hour = 12;
}
  const selectedTime = `${hour}:${minute} ${am_pm}` ;
  this.setState({ selectedTime })
}

答案 2 :(得分:0)

无论您设置的 bool 值为is24Hour,时间选择器都会以24小时格式返回小时。也就是说,如果选择8:00 PM,则时间选择器将返回JSON对象{action:'timeSetAction', hour:20, minute:0}。 没错,official docs没有显示此内容。