【问题标题】:ReactJS - How to use DatePicker from Material UI with Firestore? Timestamp to Date formatReactJS - 如何将 Material UI 中的 DatePicker 与 Firestore 一起使用?时间戳到日期格式
【发布时间】:2019-10-30 11:04:06
【问题描述】:

日期在数据库中记录正常,但是当我显示时,DatePicker 不会从数据库中重新配置日期,因为它带有时间戳(秒和纳秒)。

  <DatePicker
    margin="normal"
    label="Data do pedido"
    fullWidth
    value={
     form.datapedido   
    }
    onChange={handleChangeData}
      variant="filled"
      style={{ marginTop: 0 }}
  />

如果我将 DatePicker 的值更改为将 Timestamp 设置为 Date,那么我将无法保存日期,因为代码会尝试将 Date 更改为 Date。

如果我以这种方式离开,那么我可以保存日期,但是当我从 firestore 加载日期时,我会从 DatePicker 得到“无效日期”

【问题讨论】:

    标签: javascript reactjs firebase material-ui


    【解决方案1】:

    Firestore timestamp包含一个 toDate 方法,您可以使用该方法将日期转换为 javascript Date 对象, 假设您的组件需要一个 Date 对象。

    所以,假设 form.datapedido 是一个 Timestamp 对象:

    <DatePicker
        margin="normal"
        label="Data do pedido"
        fullWidth
        value={
         form.datapedido.toDate()
        }
        onChange={handleChangeData}
          variant="filled"
          style={{ marginTop: 0 }}
      />
    

    当您想要更新您的选择器时(在加载初始值之后),您可能会发现一个挑战。

    这很有用:

    const formatDate = (date) => isNil(date.seconds)
       ? date // Already a javascript date object
       : date.toDate()
    
    <DatePicker
        margin="normal"
        label="Data do pedido"
        fullWidth
        value={
         formatDate(form.datapedido)
        }
        onChange={handleChangeData}
          variant="filled"
          style={{ marginTop: 0 }}
      />
    

    这可能会起作用或给你一个起点,我不熟悉 DatePicker 组件

    【讨论】:

    • 很好的答案!谢谢!这正是我所需要的。
    • 很高兴帮助兄弟
    猜你喜欢
    • 2017-04-21
    • 1970-01-01
    • 2020-03-21
    • 1970-01-01
    • 2019-04-29
    • 2020-02-23
    • 2021-03-22
    • 2019-07-31
    • 2021-12-06
    相关资源
    最近更新 更多