【发布时间】:2022-01-10 20:49:57
【问题描述】:
我正在尝试在 React App 中比较两个日期,但似乎我很难获得日期输入的当前值。
我有两个日期输入,第二个的 min 属性必须 >= 到第一个选定的日期。
为了解决这个问题,我写了以下代码:
渲染:
<div className='flex-children'>
<span className='flex-line'>
<label for='depart'><i class="far fa-calendar-alt"></i> Depart: </label>
<input type='date' id='depart' value={this.state.depart} min={today} onChange={this.pickDepart} />
</span>
<span className='flex-line'>
<label for='return'> Return: </label>
<input type='date' id='return' value={this.state.returning} min={minReturn} onChange={this.pickReturn} />
</span>
</div>
状态和功能:
constructor(props) {
super(props);
this.state = {
selectedFrom: '4',
depart: depart,
returning: returing
};
this.handleChange = this.handleChange.bind(this);
this.handleSubmit = this.handleSubmit.bind(this);
}
handleChange(event) {
this.setState({
selectedFrom: event.target.selectedFrom,
depart: event.target.depart,
returing: event.target.return
});
}
handleSubmit(event) {
event.preventDefault();
}
pickDepart = (event) => {
this.setState({depart: event.target.depart});
setMinDate(event.target.depart);
};
pickReturn = (event) => {
this.setState({returning: event.target.return});
};
这里是我所有的日期函数:
function addDays(date, days) {
var result = new Date(date);
result.setDate(result.getDate() + days);
return result;
}
function getToday(days){
var today = new Date();
var today_us = addDays(today, days)
var dd = String(today_us.getDate()).padStart(2, '0');
var mm = String(today_us.getMonth() + 1).padStart(2, '0'); //January is 0!
var yyyy = today_us.getFullYear();
return yyyy + '-' + mm + '-' + dd;
};
var minReturn = getToday(0);
var depart = getToday(0);
var returing = getToday(21);
const today = getToday(0);
function setMinDate(d1){
d1 = new Date(d1);
var d2 = new Date(today);
console.log(d1);
console.log(d2);
if (d1.getTime() >= d2.getTime()){
minReturn = d1;
}else{
minReturn = today;
}
}
console.log 的打印在这里:
我在这里做错了什么,我该如何解决?
【问题讨论】:
标签: javascript reactjs datetime