【问题标题】:Express Swift Date().timeIntervalSince1970 to Firebase Epoch Time将 Swift Date().timeIntervalSince1970 表达到 Firebase 纪元时间
【发布时间】:2021-11-22 03:02:29
【问题描述】:

我关注了herehere的不同答案

我刚刚开始从here 学习Cloud Tasks。在那篇博文中,Doug 说:“我希望 expirationAtSeconds 成为以 epoch seconds 表示的过期时间”。

我希望任务在设置时间后删除帖子。在我的 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 日期,它是以 Epoch 秒表示的 Double。我不确定是否应该使用 expDate1expDate2expDate3expDate4

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 ...
});

【问题讨论】:

  • 你试过expDate1 和其他的吗?他们怎么了?
  • @Jesper 我仍在处理博客文章中的代码。我什至还没有机会运行它,因为我正在慢慢尝试理解其他所有内容。 Javascript 对我来说不是原生的,在我阅读了 Doug 的那句话后,我发现了 4 个不同的答案,所以我不知道该从哪个中选择。但根据您的问题,expDate1 似乎是最佳选择。我可以从这里使用打印语句弄清楚。谢谢!

标签: javascript ios swift firebase firebase-realtime-database


【解决方案1】:

根据我的问题,上述DateTime 方法都不适合我,因为我不断收到错误TypeError: Cannot read property 'DateTime' of undefined

我必须使用new Date(expirationDate * 1000),然后我将here转换为纪元秒

代码:

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 ...
});

【讨论】:

    猜你喜欢
    • 2010-10-06
    • 2023-03-27
    • 2011-09-17
    • 2014-09-25
    • 1970-01-01
    • 2023-03-28
    • 2017-04-02
    • 2012-01-30
    • 2021-12-17
    相关资源
    最近更新 更多