我有一个日期/时间,格式为“ 07/04/2018 12:24 PM”。我想先将其转换为格式为“ July 24,2018 12:24 PM”的字符串,然后再使用moment.js提交给服务器。
saveEditMobile = async()=> {
await this.setDateTimebeforeSubmit().then(axios.put(host+"audience/"+this.state.CurrentEditMobile,this.state))
}
setDateTimebeforeSubmit = () => {
return new Promise(resolve => {
const prev_process_date = moment(this.state.process_date, 'MM/DD/YYYY h:mm A').format('MMMM DD, YYYY h:mm A')
this.setState({
process_date: prev_process_date,
})
resolve()
})}
但是,在我运行了上面的代码之后。我发送到服务器的数据是2018-07-10T17:55:00.000Z。我不知道我的代码想要发生什么。当前状态下的Process_date值为2018年7月24日12:24 PM。我该如何解决?
答案 0 :(得分:2)
setState
是异步的,因此,如果您打算在之后直接使用this.state
,则需要确保状态已更新。您可以将resolve
作为第二个参数传递给setState
,以在状态更新后解决承诺。
您还希望为then
提供一个功能,而不是立即调用axios请求。
您还可以使用LLL
矩格式来获取所需的输出。
saveEditMobile = async () => {
await this.setDateTimebeforeSubmit().then(() => {
axios.put(host + "audience/" + this.state.CurrentEditMobile, this.state);
});
};
setDateTimebeforeSubmit = () => {
return new Promise(resolve => {
const prev_process_date = moment(
this.state.process_date,
"MM/DD/YYYY h:mm A"
).format("LLL");
this.setState({ process_date: prev_process_date }, resolve);
});
};
答案 1 :(得分:1)
moment('2016-03-12 13:00:00').format('LLL')
output :"March 13, 2016 2:00 PM"
有关更多信息,您可以使用给定链接:https://momentjs.com/guides/