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.
J'aimerais qu'il soit inséré comme indiqué ci-dessous (en tant qu'horodatage et non en tant que nombre).
Est-ce possible?
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 .
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)
où 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.
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();
}
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 .
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
Swift 4 & 5
Conversion de la date dans l'horodatage
let timestampFromDate = Timestamp(date: Date())
print(timestampFromDate)