1
votes

Comment formater la date que vous obtenez du backend

J'ai mis dans mon schéma mangouste le createdDate pour chaque nouvelle personne qui doit être créée et affichée dans le tableau mais qui ne peut pas être modifiée, donc je l'ai fait dans le schéma mangouste. Mais quand j'obtiens la date sur le frontend pour la mettre dans le tableau, je mappe d'abord. tous les éléments dans les éléments js et lorsque j'appelle la date dans un autre fichier où ma table est avec les accessoires date, je ne peux pas formater ma date en aucun cas pour être comme jj / MM / aaaa ou quelque chose de similaire à la place, je reçois comme 2020-11-13T12:37:05.637Z . Quelqu'un peut-il m'aider à savoir comment formater la date que je reçois des accessoires et de la base de données.

C'est là que j'appelle la date des accessoires.

const mongoose = require("mongoose");

const Schema = mongoose.Schema;

const personSchema = new Schema({
  name: { type: String, required: true },
  surname: { type: String, required: true },
  city: { type: String, required: true },
  address: { type: String, required: true },
  phone: { type: Number, required: true },
  createdDate: { type: Date, default: Date.now}
});

module.exports = mongoose.model("Persons", personSchema);

Et c'est là que je le mappe une fois que je l'ai obtenu du backend.

  return (
    <table className="table">
      <thead>
        <tr>
          <th>ID</th>
          <th>NAME</th>
          <th>SURNAME</th>
          <th>CITY</th>
          <th>ADDRESS</th>
          <th>PHONE</th>
          <th>CREATED DATE</th>
          <th>ACTION</th>
        </tr>
      </thead>
      {props.items.map((person) => (
        <PersonItems
          key={person.id}
          id={person.id}
          name={person.name}
          surname={person.surname}
          city={person.city}
          address={person.address}
          phone={person.phone}
          date={person.createdDate}
          onDelete={props.onDeletePerson}
        />
      ))}
         </table>
  );
};

Et c'est mon schéma.

return (
    <React.Fragment>
      {error && <Errormsg error={error} />}
      <tbody className="table">
        <tr>
          <td>{props.id}</td>
          <td>{props.name}</td>
          <td>{props.surname}</td>
          <td>{props.city}</td>
          <td>{props.address}</td>
          <td>{props.phone}</td>
          <td>{props.date}</td>
          <td>
            <Button>
              <Link to={`/person/${props.id}`}>Edit</Link>
            </Button>
            <Button onClick={deleteHandler}>Delete</Button>
          </td>
        </tr>
      </tbody>
    </React.Fragment>
  );
};


0 commentaires

5 Réponses :


0
votes

Vous pouvez utiliser momentjs pour cela

Pour obtenir le résultat souhaité, vous pouvez l'utiliser comme ceci

 <td>{moment(props.date).format("DD/MM/YYYY")}</td>

Ajoutez simplement la ligne ci-dessus à l'endroit où vous souhaitez afficher la date dans ce format.

L'avantage de cette approche est que vous pouvez modifier le format exactement selon vos besoins en modifiant la chaîne de format.


1 commentaires

@Stefan Great, pensez à marquer la réponse comme réponse acceptée pour aider les futurs utilisateurs



0
votes

try new Date('2020-11-13T12:37:05.637Z').toLocaleString() la sortie sera comme 11/13/2020, 2:37:05 PM

si vous avez utilisé la fonction de division comme new Date('2020-11-13T12:37:05.637Z').toLocaleString().split(',')[0] vous obtiendrez 11/13/2020 ce dont vous avez besoin d'après ce que je comprends

Si vous souhaitez utiliser un autre package pour cela, vous devez absolument utiliser moment.js


1 commentaires

Les réponses précédentes ont fonctionné mais merci beaucoup brooo



0
votes

package moment installation - npm install moment --save - npm install moment --save

import moment from "moment";

 <td>{moment(props.date).format("DD/MM/YYYY")}</td>

Exemple de code - https://codesandbox.io/s/trusting-antonelli-4r1qw?file=/src/App.js:200-257


1 commentaires

MERCI BEAUCOUP, ÇA MARCHE <3 <3 <3



0
votes

Une option (pour éviter les momentsjs) est d'utiliser l'API Intl:

const date = (new Intl.DateTimeFormat).formatToParts(new Date("01-01-80"))
console.log(`${date1[0].value}/${date1[2].value}/${date1[4].value}`)
// outputs 01/01/80


0 commentaires

0
votes
  • la solution à ce problème est:

  • vous devez télécharger un troisième package appelé moment

  • Si vous l'utilisez dans reactjs

  • vous pouvez l'importer comme

  • import dayjs from "dayjs";
    
    <p >{dayjs(createdAt).fromNow()}</p>
    
    
    • vous pouvez également utiliser un package tiers appelé dayjs
    import moment from "moment";
    
    <p> Ordered on : {moment(order.createdAt).fromNow()} </p>
    
    

0 commentaires