React - display a firestore timestamp

后端 未结 6 2053
醉酒成梦
醉酒成梦 2020-12-18 22:38

I am trying to figure out how to display a firestore timestamp in a react app.

I have a firestore document with a field named createdAt.

I am trying to inc

6条回答
  •  执笔经年
    2020-12-18 23:41

    After some discussion, we found that the time stamps in OPs user object could be renders as such:

    render() { 
    const { users, loading } = this.state; 
    
    return ( 
        
    {loading &&
    Loading ...
    } {users.map(user => ( {user.email} {user.name} {new Date(user.createdAt.seconds * 1000).toLocaleDateString("en-US")}

    I recreated your example in a dummy React project, and received the same error as expected.

    Error: Objects are not valid as a React child

    I was able to get this to render correctly with the following method, which should also work for you:

    {new Date(user.createdAt._seconds * 1000).toLocaleDateString("en-US")}
    

    Which, for my sample timestamp, rendered as:

    12/30/2019


    Be sure you are using a timestamp that was saved to Firestore as:

    createdAt: this.props.firebase.Timestamp.fromDate(new Date())
    

    Note: This is assuming that your instance of firebase.firestore() is at this.props.firebase. In other examples you use this.props.firebase, but those methods look like helper methods that you have created yourself.

    When this value is fetched, it will be an object with two properties -- _seconds and _nanoseconds.

    Be sure to include the underscore. If you use createdAt.seconds it won't work, it must be createdAt._seconds.


    Other things I tried:

    user.createdAt.toDate() throws toDate() is not a function.

    user.createdAt throws Error: Objects are not valid as a React child

    new Date(user.createdAt._nanoseconds) renders the wrong date

提交回复
热议问题