【问题标题】:Convert date/time format using moment.js使用 moment.js 转换日期/时间格式
【发布时间】:2018-07-24 12:38:06
【问题描述】:

我有一个格式为“07/04/2018 12:24 PM”的日期/时间。在使用 moment.js 将其提交到服务器之前,我想将其转换为格式为“2018 年 7 月 24 日 12:24 PM”之类的字符串。

  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。我该如何解决这个问题?

【问题讨论】:

标签: javascript reactjs datetime momentjs


【解决方案1】:

setState 是异步的,因此如果您打算之后直接使用this.state,则需要确保状态已更新。您可以将resolve 作为第二个参数传递给setState,以在状态更新时解决承诺。

你还想给then一个函数,而不是直接调用axios请求。

您也可以使用LLL moment 格式来获得所需的输出。

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);
  });
};

【讨论】:

    【解决方案2】:
    moment('2016-03-12 13:00:00').format('LLL')
    
    output :"March 13, 2016 2:00 PM"
    

    有关更多信息,您可以使用给定的链接:https://momentjs.com/guides/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-18
      • 2015-08-14
      • 1970-01-01
      • 2011-08-20
      • 1970-01-01
      相关资源
      最近更新 更多