You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在React Native中构建支持24小时制的时长选择器

实现24小时制0-23:59的iOS风格时长选择器

方案一:自定义双列Picker(最可靠)

既然react-native-date-picker在iOS上的24小时制支持受限,直接用@react-native-picker/picker实现双列选择器(小时+分钟)是最稳妥的方案,完全可控范围和样式,适配iOS原生滚轮效果。

步骤1:安装依赖

npm install @react-native-picker/picker
# 或
yarn add @react-native-picker/picker

步骤2:实现组件

import React, { useState } from 'react';
import { View, StyleSheet } from 'react-native';
import { Picker } from '@react-native-picker/picker';

const DurationPicker = () => {
  const [selectedHour, setSelectedHour] = useState(0);
  const [selectedMinute, setSelectedMinute] = useState(0);

  // 生成0-23小时选项
  const hourOptions = Array.from({ length: 24 }, (_, idx) => (
    <Picker.Item 
      key={idx} 
      label={`${idx}时`} 
      value={idx} 
    />
  ));

  // 生成0-59分钟选项,补零优化显示
  const minuteOptions = Array.from({ length: 60 }, (_, idx) => {
    const label = idx < 10 ? `0${idx}分` : `${idx}分`;
    return <Picker.Item key={idx} label={label} value={idx} />;
  });

  return (
    <View style={styles.container}>
      <Picker
        selectedValue={selectedHour}
        onValueChange={(val) => setSelectedHour(val)}
        style={styles.pickerColumn}
        // iOS默认滚轮模式,和系统时间选择器样式一致
      >
        {hourOptions}
      </Picker>
      <Picker
        selectedValue={selectedMinute}
        onValueChange={(val) => setSelectedMinute(val)}
        style={styles.pickerColumn}
      >
        {minuteOptions}
      </Picker>
    </View>
  );
};

const styles = StyleSheet.create({
  container: {
    flexDirection: 'row',
    justifyContent: 'space-around',
    alignItems: 'center',
    backgroundColor: '#fff',
    borderTopWidth: 1,
    borderBottomWidth: 1,
    borderColor: '#e5e5e5',
    paddingVertical: 8,
  },
  pickerColumn: {
    width: '45%',
    height: 200,
  },
});

export default DurationPicker;

优势

  • 完全自定义范围,确保从0时0分开始到23时59分结束
  • iOS下默认滚轮样式和系统时间选择器一致
  • 不受第三方组件的系统兼容性限制
  • 支持自定义样式,可完全匹配需求

方案二:使用react-native-modal-datetime-picker(备选)

如果偏好原生模态选择器,react-native-modal-datetime-picker的is24Hour属性在iOS上支持更稳定,可尝试:

步骤1:安装依赖

npm install react-native-modal-datetime-picker @react-native-community/datetimepicker
# 或
yarn add react-native-modal-datetime-picker @react-native-community/datetimepicker

步骤2:实现组件

import React, { useState } from 'react';
import { View, Button } from 'react-native';
import DateTimePickerModal from 'react-native-modal-datetime-picker';

const CustomTimePicker = () => {
  const [isPickerVisible, setPickerVisible] = useState(false);
  const [selectedTime, setSelectedTime] = useState(new Date(new Date().setHours(0, 0, 0, 0)));

  const showPicker = () => setPickerVisible(true);
  const hidePicker = () => setPickerVisible(false);

  const handleConfirm = (date) => {
    setSelectedTime(date);
    hidePicker();
  };

  return (
    <View>
      <Button title="选择时长" onPress={showPicker} />
      <DateTimePickerModal
        isVisible={isPickerVisible}
        mode="time"
        onConfirm={handleConfirm}
        onCancel={hidePicker}
        is24Hour={true}
        minimumDate={new Date(new Date().setHours(0, 0))}
        maximumDate={new Date(new Date().setHours(23, 59))}
      />
    </View>
  );
};

export default CustomTimePicker;

注意事项

  • 部分iOS版本可能仍受系统区域设置影响,若出现12小时制问题,优先切换方案一

内容的提问来源于stack exchange,提问作者Leonardo Trapani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 17:18:11