【发布时间】:2020-06-19 14:26:49
【问题描述】:
我正在为 ant design 3 date-time picker 使用我的 React 项目,我想知道在选择带时间的葡萄干日期时如何显示
这里有冲突
第一次选择未来日期并选择时间早上 8 点或早上 7 点,然后再次选择 单击选择日期并选择今天的日期,当我第一次单击时 未来的日期和早上 7 点或 8 点。该时间显示与今天日期,因为 我用今天的日期禁用了过去的时间,这是一个问题,你可以 检查
有人知道解决办法吗?
代码部分在这里
class App extends Component<AppProps, AppState> {
constructor(props) {
super(props);
this.state = {
name: 'React',
date: new Date()
};
}
//date disable
disabledDate(current: any) {
// Can not select days before today and today
//return current && current < moment().endOf('day');
return current && current < moment().startOf("day")
}
//time disable
getDisabledHours() {
var hours = [];
for (let i = 0; i < moment().hour(); i++) {
hours.push(i);
}
return hours;
}
//time disable
getDisabledMinutes = (selectedHour: any) => {
var minutes = [];
if (selectedHour === moment().hour()) {
for (var i = 0; i < moment().minute(); i++) {
minutes.push(i);
}
}
return minutes;
}
//set date
setDate(d:any){
console.log("date object is: ", d);
console.log("date is: ", d.date());
console.log("month is: ", d.month()+1);
console.log("year is: ", d.year());
console.log("Time :",moment(this.state.date).format("h:mm:ss A"))
this.setState({date: d})
const now = moment(); //get current date time
const isFuture = d.isAfter(now); //check selected date is a future date compared to current date and time
this.setState({date: isFuture ? d: now.toDate()}); //if it's a future date then assign the slected date else select the current date and time
}
render() {
return (
<div>
<DatePicker
name="Date" disabledDate={this.disabledDate}
onChange={d => this.setState({date: d})}
style={{width: "100%"}}
showTime={{ disabledMinutes: moment().date() < moment(this.state.date).date() ? undefined : this.getDisabledMinutes,
disabledHours: moment().date() < moment(this.state.date).date() ? undefined : this.getDisabledHours}}
placeholder="Select Date & Time"
/>
</div>
);
}
}
【问题讨论】:
-
那么你将如何从时间选择器切换到日期选择器?
-
@aquinq 你好,我不想从时间选择器切换到日期选择器,第一次已经打开日期选择器,你知道解决方案吗?
-
我找不到任何道具,这可能是您无法自定义的默认行为。也许您可以尝试使用 css 定位它并以这种方式隐藏它。
-
@aquinq ,是的,我尝试使用
ant-calendar-time-picker-btn {display:none}隐藏按钮、时间和日期,我不明白如何获得该道具 -
感谢您的宝贵时间,我会尝试一些解决方案