javascript - React-datepicker minTime 和 maxTime 不起作用
问题描述
我的表单上有 DatePicker 并且;
我正在使用这个包:[ https://reactdatepicker.com/#example-specific-time-range][1]
在选择开始日期:我想在当前时间之前禁用所有时间。所以如果现在凌晨 3 点。小时前(凌晨 2 点、凌晨 1 点、凌晨 12 点)将被禁用。
通常,它是这样制作的:但是他们在这里写静态时间,我想在那里添加当前时间的当前时间。
<DatePicker
selected={startDate}
onChange={date => setStartDate(date)}
showTimeSelect
minTime={setHours(setMinutes(new Date(), 0), 17)}
maxTime={setHours(setMinutes(new Date(), 30), 20)}
dateFormat="MMMM d, yyyy h:mm aa"
/>
所以我看到了一些例子并尝试了这个:
const now = moment().toDate();
<DatePicker
selected={this.state.startDate}
onChange={event => this.getStartDate(event)}
showTimeSelect
timeFormat="haa"
timeIntervals={60}
minDate={now}
minTime={now.hours(now.hour()).minutes(now.minutes())}
maxTime={now.hours(23).minutes(45)}
dateFormat="MM/d/yyyy hhaa"
timeCaption="Hour"
/>
但什么也没发生。我在哪里犯了错误?
解决方案
filterTime
使用道具过滤过去的时间对我有用。这是文档片段的链接:
https://reactdatepicker.com/#example-filter-times
本质上,这是您需要做的:
() => {
const [startDate, setStartDate] = useState(null);
const filterPassedTime = (time) => {
const currentDate = new Date();
const selectedDate = new Date(time);
return currentDate.getTime() < selectedDate.getTime();
};
return (
<DatePicker
selected={startDate}
onChange={(date) => setStartDate(date)}
showTimeSelect
filterTime={filterPassedTime}
dateFormat="MMMM d, yyyy h:mm aa"
/>
);
};
您也不需要使用任何外部库,例如date-fns
推荐阅读
- angularjs - Java、Struts 1.2、Json Angular JS - 如何从动作类获取 json 响应到我的 Angular JS 页面?
- javascript - 使用 JavaScript 添加 Html 表头
- safari - 更新 Safari 应用程序扩展内容阻止程序列表
- swift - 在另一个实体CoreDataRelationships下保存实体数组
- python - 读取多个excel文件并将其写入python中的多个excel文件
- c# - 通用对象的创建模式
- wordpress - wordpress url后的数字不显示404
- node.js - 使用 GraphQL 和 NodeJS INSERT INTO 后 PostgreSQL“输入结束时的语法错误”
- sql - 如何在数据库链接上运行行数?
- python - Python的分叉连接模型实现?(相当于Java的ForkJoinPool)