时间戳方程 - Firebase 数据库 + Swift

Posted

技术标签:

【中文标题】时间戳方程 - Firebase 数据库 + Swift【英文标题】:Timestamp Equation - Firebase Database + Swift 【发布时间】:2021-11-27 06:33:23 【问题描述】:

我正在学习 swift 编码和 firebase。我正在尝试这段代码,理论上它确实有意义,但是我没有达到预期的结果。好像我的数学是错误的,但是我想我可能是错误地格式化了代码。

基本上,帖子会使用时间戳保存到 firebase rtd。我希望在帖子上传后一分钟后删除该帖子。

let postFinally = Posts(timeStamp: timeStamp as! Double?)

let cutTime = 1.0 * 60.0 * 1000.0
                    
let postTime = postFinally.timeStamp as Any as! Double
  
   if postTime > postTime + cutTime 
      print("delete")
    else 
       print("not delete")
        
 // Timestamp derived from the firebase database. Ie, 1633590010833.0       

我的代码格式错误吗?即使在所需时间之后,它也总是返回“请勿删除”。

任何帮助将不胜感激!谢谢

编辑更新的方程式但似乎不起作用。我选择剪切时间为一个小时,但它仍然会立即执行“删除”。

let postFinally = Posts(timeStamp: timeStamp as! Double?)

let cutTime = 1.0 * 60.0 * 60.0 * 1000.0
                    
let postTime = postFinally.timeStamp as Any as! Double
  
   if postTime < postTime + cutTime 
      print("delete")
    else 
       print("not delete")
        
 // Timestamp derived from the firebase database. Ie, 1633590010833.0       

【问题讨论】:

【参考方案1】:

看这里

if postFinally.timeStamp! > postFinally.timeStamp! + cutTime 
   print("delete")

你在 postFinally.timeStamp 中添加了一些东西,那么 postFinally.timeStamp 是如何大于 postFinally.timeStamp + cutTime 的呢?

postFinally.timeStamp + cutTime > postFinally.timeStamp

所以我认为你的代码会执行 else 块。

您可以将发布的时间作为字符串获取,然后您可以轻松获取以秒为单位的时差。这是一个例子

guard let postedDate = timeString.toDate() else  return "" 
let timeDifferenceSecond = Date().timeIntervalSince(postedDate) 

【讨论】:

这很奇怪,因为当我这样做时,无论实际时间如何,它都会执行第一个块。我将编辑上面的答案,并直观地描述我的意思。谢谢你的意见,虽然我真的很感激 我已经添加了另一个解决方案,请检查。

以上是关于时间戳方程 - Firebase 数据库 + Swift的主要内容,如果未能解决你的问题,请参考以下文章

Firebase FCM React 项目问题 - firebase-messaging-sw.js 类型错误?

如何根据来自firebase的时间戳获取排序数据[重复]

Flutter Firebase 数据库错误的时间戳顺序

Firebase 时间戳值及查询 | JavaScript

将时间戳发布到 Android Firebase 数据库不起作用

Firebase 实时数据库 - DatabaseReference.push().getKey() 是一个时间戳