我正在使用带有react-datepicker的Moment.js。它按照ISO-8601的日期转换的方式工作,但我无法使其符合时间。
这是我的组件:
最初陈述:
this.state = {
from: moment().subtract(7, "days"), // Default 1 week back
to: moment(), // Current date
};
组件本身:
<DatePicker
dateFormat="DD-MMM HH:mm"
dropdownMode="select"
selected={this.state.from}
onChange={this.handleFromChange}
/>
onchange触发器:
handleFromChange(date) {
this.setState({
from : date
});
}
我认为我的问题是dateFormat;在将DD-MMM发布到某些后端服务之前,通过使用ECMAScript函数toISOString()
进行调用,可以轻松地将DD-MMM转换为ISO-8601。但是我如何有时间去做呢?
用户(我自己,测试)可能会在datepicker本身上占用时间,但它不会在状态中注册。只需它选择当前时间或1周前的当前时间(根据从/到初始状态的时刻)。日期,我也可以改变,但时间保持不变(当前时间)。
如何更改dateFormat以便从用户输入时间?如何在dateFormat
属性中默认使其符合ISO 8601标准?
编辑:我刚测试设置为“从”减去5分钟,如下:
this.state = {
from: moment().subtract(5, "minutes"),
to: moment(), // Current date
};
当我发布它时,它会正确格式化。似乎很奇怪。它必须与onChange函数有关吗?