材质 UI 日期和时间选择器返回本地值。您可以在他们的 onChange 函数中编写一个函数来将日期重新格式化为任何值。
handleTimeInput = (event, time) => {
this.setState({
time: time
})
}
然后,您可以使用以下简单功能将本地时间转换为 UTC 来重置发送到服务器的时间
export default (date) => {
return new Date(date.getTime() + date.getTimezoneOffset()*60000)
}
(用于显示)
export default (date) => {
const tempDate = new Date(date)
return new Date(tempDate.getTime() - tempDate.getTimezoneOffset()*60000)
}
这是我的 comp 的整个组件代码。
class DateTimePicker extends Component {
constructor(props) {
super(props);
this.state = {
date: null,
time: null
};
}
handleDateInput = (event, date) => {
this.setState({
date: date
})
}
handleTimeInput = (event, time) => {
this.setState({
time: time
})
}
componentDidUpdate(prevProps, prevState) {
const {setSchedule, channel} = this.props
if (prevState.date !== this.state.date || prevState.time !== this.state.time) {
if (this.state.date && this.state.time) {
setSchedule(convertISTtoUTC(concatenateDateAndTime(this.state.date, this.state.time)), channel)
}
}
}
render() {
return (
<div >
<DatePicker autoOk={true} onChange={this.handleDateInput} />
<TimePicker autoOk={true} pedantic={true} onChange={this.handleTimeInput} />
</div>
)
}
}
有了这个,你有2个选择。
1)您可以将其直接挂钩到 redux 并在两者都被选中时拍摄动作。
https://marmelab.com/admin-on-rest/Actions.html
2)编写自己的输入组件
https://marmelab.com/admin-on-rest/Inputs.html#writing-your-own-input-component