Android Kotlin中如何获取Firebase查询所需的系统当前时间戳?
获取Firebase分页查询所需的系统当前时间戳
嘿,我来帮你搞定这个问题!在Firebase Firestore里获取适合分页查询的时间戳,有两种实用的方式,其中第一种是官方推荐的最优解:
1. 使用Firebase服务器时间戳(推荐)
如果你的news集合里的timestamp字段是用Firebase提供的服务器时间设置的(比如存数据时用FieldValue.serverTimestamp()),那查询时也用这个方法获取时间戳是最靠谱的——它会直接调用Firebase服务器的当前时间,完全避免客户端本地时间不准的问题,非常适合分页这种对时间一致性要求高的场景。
修改后的代码如下:
import com.google.firebase.firestore.FieldValue; // ... FirebaseFirestore.getInstance().collection("news") .orderBy("timestamp", Query.Direction.DESCENDING) .startAfter(FieldValue.serverTimestamp()) // 这里替换成服务器时间戳 .limit(4) .get()
2. 使用客户端本地时间戳(不推荐用于分页)
如果特殊场景下你确实需要用设备本地的当前时间,可以用Java自带的System.currentTimeMillis(),它会返回当前设备的毫秒级时间戳。但要注意:客户端的本地时间可能被用户修改,导致查询结果不准确,所以不建议用在分页查询里。
示例代码:
long localTimestamp = System.currentTimeMillis(); FirebaseFirestore.getInstance().collection("news") .orderBy("timestamp", Query.Direction.DESCENDING) .startAfter(localTimestamp) .limit(4) .get()
总结一下,优先选第一种服务器时间戳的方式,能保证你的分页查询逻辑稳定可靠~
内容的提问来源于stack exchange,提问作者user13871738
相关产品推荐
相关产品推荐

