当前位置: 首页 > 知识库问答 >
问题:

Express Swift Date(). timeIntervalSince1970至Firebase纪元时间

莫逸仙
2023-03-14

我从这里和这里得到了不同的答案

我刚刚开始学习云任务。在那篇博文中,道格说:“我想要的是expirationAtSeconds是以秒表示的过期时间。”。

我希望任务在设置时间后删除帖子。在我的iOS应用程序中,我创建了一个在特定时间过期的帖子:

let timeStamp = Date().timeIntervalSince1970

let postDate: Date = Date(timeIntervalSince1970: timeStamp)
var expirationDate: Date? = Calendar.current.date(byAdding: .hour, value: +24, to: postDate)
guard let exp = expirationDate else { return }

let expiresAt = exp.timeIntervalSince1970

dict.updateValue(expiresAt, forKey: "expiresAt")
dict.updateValue(timeStamp, forKey: "postDate")
// other values ...

ref.updateChildValues(dict)

它给我一个数据库值,比如:

posts
  some_post_Id
    -"expiresAt": 1632627680.340107
    // other values ...

在我的云函数中,我希望expiresAt日期是一个Double,以Epoch秒表示。我不确定是否应该使用expDate1、expDate2、expDate3或expDate4:

exports.onCreatePost = functions.database.ref('/posts/{postId}').onCreate((snapshot, context) => {

    const post = snapshot.data();

    const expiresAt = snapshot.child("expiresAt").val();
    const expirationDate = expiresAt.valueOf(); // 1632627680.340107

    var expDate1 = DateTime.fromMillisecondsSinceEpoch(expirationDate * 1000)

    var expDate2 = DateTime.fromMicrosecondsSinceEpoch(expirationDate * 1000000)

    var expDate3 = DateTime.fromMicrosecondsSinceEpoch(expirationDate.microsecondsSinceEpoch)

    var expDate4 = expirationDate.toDate()

    const expirationAtSeconds = either expDate1, expDate2, expDate3, or expDate4

    // continue on with the rest of the code ...
});

共有1个答案

林龙野
2023-03-14

从我的问题来看,上面的DateTime方法对我都不起作用,因为我一直收到一个错误TypeError:cannotread属性“DateTime”的undefined。

我必须使用new Date(expirationDate*1000),我从这里得到了转换为纪元秒

代码:

const functions = require("firebase-functions");
const admin = require('firebase-admin');
admin.initializeApp();

exports.onCreatePost = functions.database.ref('/posts/{postId}').onCreate((snapshot, context) => {

    const post = snapshot.data();

    const expiresAt = snapshot.child("expiresAt").val();
    const expirationDate = expiresAt.valueOf(); // 1632627680.340107

    const expDate = new Date(expirationDate * 1000); // <--------Here

    const expirationAtSeconds = expDate.getTime()/1000.0; // <-------- this will be epoch seconds conversion

    console.log("expDate: " + expDate + " | expirationAtSeconds:" + expirationAtSeconds);

    // continue on with the rest of the code ...
});
 类似资料:
  • 本文向大家介绍将博客迁移至docker纪实,包括了将博客迁移至docker纪实的使用技巧和注意事项,需要的朋友参考一下 由于五一前的这周工作需求不是很多,便趁着这个机会将博客迁移到了docker中,虽说网上docker相关文章有很多,第一次实践的我还是遇到了一些小问题,现在便来总结一下。 在这里我要推荐的是docker_practice(本站地址),有中英文版本,很多细节知识都有讲到,非常适合入门

  • 问题内容: 我一直在寻找一种将字符串(以纪元时间)转换为日期的方法。 基本上,我需要使用this:(以字符串形式)并将其放入this:中。 我一直在看strptime和strftime,但似乎都没有为我工作。有什么建议么? 编辑:谢谢,伙计们。我将其转换为int ,将其转换为,然后在其上运行。完美地工作! 问题答案: 如果只有该值是整数而不是字符串,则可以调用。如果只有某种方法可以将字符串转换为整

  • 问题内容: 我有一个包含UNIX Epoch time的字符串,我需要将其转换为Java Date对象。 标记的行是我遇到麻烦的地方。我无法计算出SimpleDateFormat()的参数是什么,甚至无法使用SimpleDateFormat()。 问题答案: 怎么样: 编辑:根据rde6173的答案,并仔细查看问题中指定的输入,“ 1081157732”似乎是基于秒的纪元值,因此你想将parseL

  • 我的问题是,我也希望以这样的格式存储出生日期。现在,我可以将01-01-1900作为开始日期,并将自该日期以来的天数存储在int中。虽然我很肯定这会很好,但感觉像是epoch是一个很好的概念,但生日的感觉像是我在建立自己的惯例,这是我通常喜欢避免的。 对于将日期存储标准化为一个数字,是否有任何既定的标准?哪一个日期应该是比较基准日期?

  • 上下文是,我们的产品中有一个现有的应用程序,它生成并向现有的oracle过程发送纪元号&反之亦然。它在该过程中使用如下内容 当我尝试这些查询时,它对我也适用于Oracle10g服务器(如果有关系的话,还有Oracle sql Developer4.x)。 在现有的过程中,要求将值保存为日期本身(时间组件与日期无关),但是在新的要求中,我必须将unix EPOCH值转换为日期时间(小时/分钟/秒级别