Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Subtracting a week from firebase.firestore.Timestamp.now()?

How would I go about subtracting a week from a firebase.firestore.Timestamp.now() timestamp? I have different documents that have a timestamp, and I need to build a function that would check if any of those documents have a timestamp older than 7 days. Heck, maybe there is a built in function to check if a date is "expired"? Thanks in advance.

like image 230
MicasiO Avatar asked Mar 24 '26 21:03

MicasiO


1 Answers

As defined here,

firebase.firestore.Timestamp.now()

is the equivalent of

firebase.firestore.Timestamp.fromMillis(Date.now())

To get a week old timestamp, you would use:

// 1 week in ms = 1000 * 60 * 60 * 24 * 7 = 604800000

const nowTimestamp = firebase.firestore.Timestamp.now();
const weekOldTimestamp = firebase.firestore.Timestamp.fromMillis(nowTimestamp.toMillis() - 604800000);
// or the shorter
const weekOldTimestamp = firebase.firestore.Timestamp.fromMillis(Date.now() - 604800000);

Let's say you have the following document in a collection called /photos:

{
  "title": "My Photo",
  "desc": "This is the first photo I uploaded here",
  "storageRef": "/userData/userid1/uploads/89q24u2q98y23.png",
  "thumbnailRef": "/userData/userid1/uploads/89q24u2q98y23.thumbnail.png",
  "createdAt": FieldValue.serverTimestamp(),
}

If you wanted to find all photos that were older than a week, you would use, either of the following identical statements:

firebase.firestore().collection("photos")
  .where("createdAt", "<", new Date(Date.now() - 604800000))
  .get()

or

const weekAgoTimestamp = firebase.firestore.Timestamp.fromMillis(Date.now() - 604800000);

firebase.firestore().collection("photos")
  .where("createdAt", "<", weekAgoTimestamp)
  .get()

If you had copy of the document already, from a query like this:

const aPhotoSnapshot = await firebase.firestore()
  .doc("photos/somePhotoId")
  .get();

and you wanted to check if it was older than a week, you would use:

const createdAtTimestamp = aPhotoSnapshot.get("createdAt");
const isWeekOld = createdAtTimestamp.toMillis() < Date.now() - 604800000;
like image 112
samthecodingman Avatar answered Mar 27 '26 10:03

samthecodingman



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!