web-dev-qa-db-fra.com

Convertir la date en horodatage pour le stocker dans Firebase Firestore en javascript

J'utilise actuellement Math.floor(Date.now() / 1000) pour obtenir le format d'horodatage correct à ajouter dans un document dans Firebase. Toutefois, l'horodatage est inséré sous forme de nombre et non de timestamp.

number

J'aimerais qu'il soit inséré comme indiqué ci-dessous (en tant qu'horodatage et non en tant que nombre).

enter image description here

Est-ce possible?

8
Arjen de Jong

Vous pouvez simplement utiliser la ligne suivante:

var myFirebaseFirestoreTimestampFromDate = firebase.firestore.Timestamp.fromDate(new Date());

.fromDate est une méthode statique de la classe d'horodatage statique de Firebase .

Réf.: Doc Timestamp de Firebase

23
Sean Stayn

Si vous souhaitez stocker un champ sous forme d'horodatage dans Firestore, vous devez envoyer un objet JavaScript Date ou un objet Firestore Timestamp en tant que valeur du champ.

Si vous voulez utiliser Date, dites simplement new Date(x)x est la valeur en millisecondes que vous tentiez d'ajouter auparavant.

Si vous souhaitez utiliser l'horodatage, vous devrez effectuer plus de travail pour convertir x en une combinaison de secondes et de nanosecondes à transmettre au constructeur, comme le suggère la documentation.

5
Doug Stevenson

Comme je peux voir que vous êtes en train d’ajouter cette date, vous feriez mieux d’utiliser l’horodatage du serveur et la règle de sécurité ci-dessous pour l’appliquer.

Règles de sécurité

allow create: if request.resource.data.date_added == request.time && 
              // other rules for the message body

code JS côté client

const message = {
    date_added: firebase.firestore.FieldValue.serverTimestamp();
}
3
Jack Woodward

Pour stocker une date/heure dans Firestore, vous devez envoyer un objet Date.

Par exemple, avec une date existante, définissez un champ sur: new Date("December 10, 1815")

Des informations complémentaires sont disponibles dans la documentation .

2
JakeSteam

Utilisation

 let lang = 'en-US' // you may use user's computer language: navigator.language || navigator.userLanguage
 let d = new Date(date);
 let options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric', hour:"numeric", timeZone:'short' };
 firebase.database().ref('/thePathYouLikeToSave/date_added').set(d.toLocaleDateString(lang, options));

pour plus d'options de la date ici tous les détails

0
HakanC

Swift 4 & 5

Conversion de la date dans l'horodatage

let timestampFromDate = Timestamp(date: Date())
print(timestampFromDate)
0
Akbar Khan