我正在学习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
我的代码格式是否错误?它总是返回'不删除',即使在所需的时间之后。
任何帮助将非常感激!谢谢你
编辑更新的方程,但似乎不工作。我选择切割时间为一小时,但是,它仍然会立即执行'delete'。
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
在这里检查
if postFinally.timeStamp! > postFinally.timeStamp! + cutTime {
print("delete")
}
你已经在postFinally中添加了一些东西。时间戳,postFinally。timeStamp大于postFinally。timeStamp + cutTime ?
postFinally.timeStamp + cutTime > postFinally.timeStamp
所以我认为你的代码将执行else块。
或
您可以将发布的时间作为字符串,然后您可以轻松地以秒为单位获得时间差。下面是示例
guard let postedDate = timeString.toDate() else { return ""}
let timeDifferenceSecond = Date().timeIntervalSince(postedDate)