检查并比较Firebase Swift中的消息时间

检查并比较Firebase Swift中的消息时间,swift,firebase,firebase-realtime-database,nsdate,Swift,Firebase,Firebase Realtime Database,Nsdate,我想做的是我有一个用Swift制作的短信应用程序,我使用Firebase作为我的数据库。我想做的是像在Snapchat中一样拥有消失消息的功能;然而,我不确定我该如何去做。我在数据库中的消息上有一个时间戳,但我不确定如何使用它。这就是我要做的,我只是不知道确切的代码 下面是我的数据库结构的图片。如果你需要更多的信息,请告诉我。多谢各位 我建议从1970年1月1日起,通过使用Swift中的NSDate().timeIntervalSince1970*1000,然后使用Date().getTime(

我想做的是我有一个用Swift制作的短信应用程序,我使用Firebase作为我的数据库。我想做的是像在Snapchat中一样拥有消失消息的功能;然而,我不确定我该如何去做。我在数据库中的消息上有一个时间戳,但我不确定如何使用它。这就是我要做的,我只是不知道确切的代码

下面是我的数据库结构的图片。如果你需要更多的信息,请告诉我。多谢各位


我建议从1970年1月1日起,通过使用Swift中的
NSDate().timeIntervalSince1970*1000
,然后使用
Date().getTime(),以毫秒为单位管理Firebase中的时间戳在用JavaScript编写的cron作业中。您可以在firebase中的
date
节点下为创建的每篇文章存储
date=Int64(NSDate().timeIntervalSince1970*1000)
。然后,您可以使用Firebase函数和Google Cloud创建一个cron作业,该作业每小时运行一次,查询帖子并删除时间戳超过一天的帖子

下面是一个关于如何开始使用cron的精彩教程:

您的cron作业将需要在
node.js
中进行编码,其外观如下:

// example cron job after setting everything up in the tutorial
    exports.hourly_job =
        functions.pubsub.topic('hourly-tick').onPublish((event) => {
        // get current date and time
        var currentDate = new Date();
        console.log("Hourly Deletion Ran at: " + currentDate);
        var currentNumMilliseconds = currentDate.getTime();
        // remove a days worth of time
        var oneDayAgo = currentNumMilliseconds - (3 * 24 * 60 * 1000);
        var cutoffDate = new Date(oneDayAgo);
        console.log("Query start at date: " + oneDayAgo);
        // the firebase database ref where your posts are stored
        const ref = admin.database().ref('posts');
        // query all posts more than a day old
        ref.orderByChild('date').startAt(oneDayAgo).once('value').then(function (snapshot) {
            // for each snapshot returned from the query that is older than one day, delete
            snapshot.forEach(function(childSnapshot) {
                var key = childSnapshot.key;
                var postObject = childSnapshot.val();   
                ref.child('key').remove();
            });

        });
    });

您需要使用
(NS)日期格式化程序
日期
转换为
(NS)日期
对象,该日期是
字符串。快速完成后,
dateFormat
似乎是
yyyyMMddHHmmss
。但是,由于它是那种特定的格式,您也可以使用这种格式将
Date()
转换为
String
,并比较
String
(例如,如果您想要一个“在n秒内过期”的值,则除外)@Larme你介意给我一个代码示例吗?我如何检查日期并进行比较,以便在24小时后所有邮件都会消失?你想在邮件过期时从数据库中删除邮件还是不想显示它?@Alexander是的,我想从数据库中删除它database@Jaqueline您可能想设置一个cron工作。firebbase有一个很棒的教程。