Reaction-DatePicker时间选择(以秒为单位)
我还需要从反应日期选取器中选择秒。我翻了一遍文件发现了这个
在此解决方案中,我可以从中选择小时、分钟、AM/PM,但没有秒数选项,无法自定义也可以从中选择秒数。需要帮助,如下例(look for input Time)
我已尝试更改日期格式
dateFormat=";MM/dd/yyyy h:mm:ss AA&qot;不工作
() => {
const [startDate, setStartDate] = useState(new Date());
return (
<DatePicker
selected={startDate}
onChange={date => setStartDate(date)}
timeInputLabel="Time:"
dateFormat="MM/dd/yyyy h:mm aa"
showTimeInput
/>
);
};
我找到了显示秒的方法,但这种方法工作正常,但是在模型中,在我们选择时间之后,整个对话框将关闭。我正在使用此MaterialUi对话框
() => {
const [startDate, setStartDate] = useState(new Date());
const ExampleCustomTimeInput = ({ value, onChange }) => (
<input
type="time"
step="1"
value={value}
onChange={e => onChange(e.target.value)}
style={{ border: "solid 1px pink" }}
/>
);
return (
<DatePicker
selected={startDate}
onChange={date => setStartDate(date)}
showTimeInput
customTimeInput={<ExampleCustomTimeInput />}
/>
);
};
解决方案
您可以在其中使用customTimeInput
属性和路径OWNonChange
函数:
customTimeInput={
<CustomTimeInput
onChangeCustom={this.handleChangeTime}
/>
}
以下是组件:
const CustomTimeInput = ({ date, onChangeCustom}) => {
const value = date instanceof Date && !isNaN(date)
? // Getting time from Date beacuse `value` comes here without seconds
date.toLocaleTimeString('it-IT')
: '';
return (
<input
className="bp3-input bp3-fill"
type="time"
step="1"
value={value}
onChange={(event) => onChangeCustom(date, event.target.value)}
/>);
};
和回调示例:
handleChangeTime = (date, time) => {
const [hh, mm, ss] = time.split(':');
const targetDate = date instanceof Date && !isNaN(date) ? date : new Date();
targetDate.setHours(Number(hh) || 0, Number(mm) || 0, Number(ss) || 0);
this.handleDateChange(targetDate);
};
相关文章