使用moment.js转换日期/时间格式

时间:2018-07-24 12:38:07

标签: javascript reactjs datetime momentjs

我有一个日期/时间,格式为“ 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。我该如何解决?

2 个答案:

答案 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/