Java 如何从firestore的FieldValue.serverTimestamp()中减去24小时?

Java 如何从firestore的FieldValue.serverTimestamp()中减去24小时?,java,android,firebase,google-cloud-firestore,timestamp,Java,Android,Firebase,Google Cloud Firestore,Timestamp,我需要向Firebase Cloud函数传递两个值 第一个是当前时间戳,第二个是时间戳24小时返回 我使用FieldValue.serverTimestamp()获取当前时间戳,但是FieldValue.serverTimestamp()如何减去24小时 我需要与FieldValue.serverTimestamp()格式相同的最终结果 我的全部代码都是用java编写的 如果有其他解决方案,请参考它,但主要是我想在服务器时间戳上执行一个操作不可能直接在FieldValue.serverTimes

我需要向Firebase Cloud函数传递两个值

第一个是
当前时间戳
,第二个是
时间戳
24小时
返回

我使用
FieldValue.serverTimestamp()
获取当前时间戳,但是
FieldValue.serverTimestamp()
如何减去24小时

我需要与
FieldValue.serverTimestamp()格式相同的最终结果

我的全部代码都是用java编写的


如果有其他解决方案,请参考它,但主要是我想在服务器时间戳上执行一个操作

不可能直接在
FieldValue.serverTimestamp()上执行日期数学。它返回一个静态令牌值(根本不是时间戳对象),在写入时在服务器上进行解释

如果要计算相对于服务器时间戳值的某个时间,则必须:

  • 编写
    FieldValue.serverTimestamp()
  • 将其作为时间戳对象从文档中读回
  • 对时间戳的组件值(秒)执行时间数学,以创建具有所需时间的新时间戳
  • 将新的时间戳写入文档

  • 感谢您的帮助,但找到了另一种解决方案。我不确定这是正确的方法,但它对我来说是有效的

    Date currentTime=新日期(Timestamp.now().getSeconds()*1000)

    Date currentTime24hrsBack=新日期(Timestamp.now().getSeconds()*1000-24*60*60*1000)

    新时间戳(currentTime24hrsBack).toDate()

    新时间戳(currentTime24hrsBack).toDate()


    import com.google.firebase.Timestamp

    我需要同时更新这两个值,因为有另一个基于这两个值的任务,这是客户端直接写入无法实现的。您必须通过一个后端,该后端不需要服务器时间戳,并且可以可靠地生成自己的日期。该后端可以生成两个日期,假设它自己的时钟被认为是准确的。如果你的另一个值总是在时间戳前24小时,为什么不在另一个任务中计算它,而不是存储这两个值呢?我更改了代码,因为我使用Firebase Cloud函数得到了一个更可行的解决方案,但仍然需要这两个值