J'ai un code de code de fonction cloud comme celui-ci:
console.log(`ts: ${(element.get('expire') as admin.firestore.Timestamp).toDate().toUTCString()} now: ${admin.firestore.Timestamp.now().toDate().toUTCString()}`) const greater = (element.get('expire') as admin.firestore.Timestamp) > admin.firestore.Timestamp.now() const lower = (element.get('expire') as admin.firestore.Timestamp) < admin.firestore.Timestamp.now() console.log(`greater: ${greater} lower: ${lower}`)
Dans la console:
ts: lun, 08 avril 2019 20:59:59 GMT maintenant: ven, 08 mars 2019 20:19:18 GMT
supérieur: faux inférieur: faux
Alors, comment comparer correctement les horodatages?
3 Réponses :
Vous pouvez le faire en comparant les secondes < / a> et nanosecondes sur le Objets d'horodatage. Ou, pour simplifier les choses, et vous n'avez pas besoin d'une précision à la nanoseconde, vous pouvez simplement comparer les résultats des résultats de leur toMillis () valeurs.
Merci. C'est la seule solution pour comparer les millisecondes.
est-il possible de créer un index pour les horodatages Firebase?
Avez-vous essayé de transformer vos horodatages en un objet Date pour pouvoir ensuite simplement comparer des dates au lieu des horodatages?
Par exemple:
const greater = new Date(element.get('expire') as admin.firestore.Timestamp) > new Date(); const lower = new Date(element.get('expire') as admin.firestore.Timestamp) < new Date();
À partir de la version 7.10.0 du SDK, vous pouvez comparer directement les objets Timestamp avec les opérateurs de comparaison d'inégalités arithmétiques JavaScript ( Pour vérifier si deux objets Timestamp sont temporellement identiques, vous devez utiliser la propriété Extrait de code extrait du problème GitHub correspondant : <
, <=
, > code>, et
> =
). isEqual
( docs ). La comparaison avec ==
ou ===
ne vérifiera pas l'égalité temporelle - renvoyant false
si vous comparez différentes instances d'objet.