Home > Enterprise >  Calculate the difference between timestamp on google cloud function
Calculate the difference between timestamp on google cloud function

Time:09-19

I have a function that will run daily to check the age of every post, so how I can get the difference (in seconds) between the timestamp that I have stored in Firestore (stored as timestamp type) and the current timestamp.

exports.dailyCheckPost = functions.runWith(runtimeOptions).pubsub.schedule("28 15 * * *").timeZone('Asia/Kuala_Lumpur').onRun(async () => {

    console.log("Function Running!")

    const snapshot = await firestore.collection("post").where("isPublished","==",true).get();

    snapshot.forEach(async (doc) => {

        const data = doc.data()

        var difference = admin.firestore.Timestamp.now() - data.createdAt

        firestore.collection("users").doc(doc.id).set({
            age : difference
        },
        {
            merge: true
        })
    })

});

CodePudding user response:

So...

var difference = new Date().valueOf() - data.createdAt.toDate().valueOf();

If you want to know the google real time...

admin.firestore().collection("time").doc("timeDoc").update({
  updateAt:firebase.firestore.FieldValue.serverTimestamp()
}

const query = admin.firestore().collection("time").doc("timeDoc").get();
var difference = query.data().createAt.toDate().valueOf() - data.createdAt.toDate().valueOf();

However, the difference(ms) still exist the inaccuracy because the internet delay...

But... the admin object... it seems it is server code, and we usually use local time - createAt. Because our server always connects to internet, and rarely delays.

  • Related