Quisiera saber como puedo deshabilitar la hora y los minutos tomando en cuenta la hora actual y no las pasadas.
const disabledHours = () => { const hours = []; for (let i = 0; i < moment().hour(); i += 1) hours.push(i); return hours; }; const disabledMinutes = (selectedHour) => { const minutes = []; if (selectedHour === moment().hour()) { for (let i = 0; i < moment().minute(); i += 1) minutes.push(i); } return minutes; }; <TimePicker disabledHours={disabledHours} disabledMinutes={disabledMinutes} format="h:mm a" style={{ width: '100%' }} disabled={isLoading} />Si desea deshabilitar el tiempo futuro:
const disabledHours = () => { const hours = []; const currentHour = moment().hour(); for (let i = currentHour + 1; i <= 24; i++) { hours.push(i); } return hours; }; const disabledMinutes = (selectedHour) => { const minutes = []; const currentMinute = moment().minute(); if (selectedHour === moment().hour()) { for (let i = currentMinute; i <= 60; i++) { minutes.push(i); } } return minutes; };DEMOSTRACIÓN: https://codesandbox.io/s/antd-reproduction-template-forked-uslk0?file=/index.js
Para evitar problemas con el cambio de AM o PM, puede escribir cualquier lógica sobre cómo desea establecer la referencia de tiempo máximo para la devolución de llamada onSelect , por ejemplo:
const TimeComponent = () => { const [selectedTime, setSelectedTime] = useState(moment()); const disabledHours = () => { const hours = []; const currentHour = moment().hour(); for (let i = currentHour + 1; i <= 24; i++) { hours.push(i); } return hours; }; const disabledMinutes = (selectedHour) => { const minutes = []; const currentMinute = moment().minute(); if (selectedHour === moment().hour()) { for (let i = currentMinute + 1; i <= 60; i++) { minutes.push(i); } } return minutes; }; const onSelect = (time) => { if (time.isAfter(moment())) { console.log("ping"); setSelectedTime(moment()); return; } setSelectedTime(time); }; return ( <TimePicker onSelect={onSelect} disabledHours={disabledHours} disabledMinutes={disabledMinutes} format="h:mm a" value={selectedTime} style={{ width: "100%" }} use12Hours={true} /> ); };