如何从Firestore时间戳记(firebase)中获取时间?

时间:2018-10-06 12:24:41

标签: angular firebase date google-cloud-firestore

我一直在尝试从存储在Firestore数据库中的日期开始获取“时间之前”。

我尝试了两个可以做到这一点的程序包,但我无法使其与Firestore时间戳一起使用,老实说,我不敢相信获得此功能会像以前一样困难。

获取自动更新的“时间之前”的最简单方法是什么?

我设法从Firestore的时间戳中获取了完整的日期,而不是它的早期版本。

1 个答案:

答案 0 :(得分:4)

如果您将日期作为timestamp存储在Firestore中(例如,使用FieldValue.serverTimestamp()),则以下Javascript代码将为您提供自storedTimestamp的日期起经过的时间,以毫秒为单位:

    var db = firebase.firestore();

    var docRef = db.collection('yourCollection').doc('yourDocId');

    docRef.get().then(function (doc) {
        if (doc.exists) {
            var storedDate = new Date(doc.data().storedTimestamp);
            var nowDate = new Date();
            var elapsedTime = (nowDate.getTime() - storedDate.getTime());
            console.log(elapsedTime);

        } else {
            // doc.data() will be undefined in this case
            console.log("No such document!");
        }
    }).catch(function (error) {
        console.log("Error getting document:", error);
    });

您还可以如下使用moment.js库,例如,以天为单位计算出差额。

    docRef.get().then(function (doc) {
        if (doc.exists) {
            var storedDate = moment(doc.data().storedTimestamp);
            var nowDate = moment();
            //get the difference in days, for example
            console.log(nowDate.diff(storedDate, 'days'))

        } else {
            // doc.data() will be undefined in this case
            console.log("No such document!");
        }
    }).catch(function (error) {
        console.log("Error getting document:", error);
    });