gpt4 book ai didi

android - 如何使用服务器时间在 Firestore 中设置纪元

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:27:13 25 4
gpt4 key购买 nike

我正在尝试设置在 Firestore 中创建数据时的纪元。我希望使用 ServerValue.TIMESTAMP 获得与在实时数据库中完成的结果类似的结果。

我不想使用设备时间 System.getCurrentMillis 来设置它,因为用户可以更改该时间。

根据 docs需要进行更新,问题在于格式。这是我的代码:

Map<String, Object> map = new HashMap<>();
map.put("timestamp", FieldValue.serverTimestamp());
reference.update(map);

这是 Firebase 网络控制台中的结果:

enter image description here

我很惊讶它是西类牙语的,这在某些情况下可能很有用,但我正在追逐的是 epoch。试着看到好的一面并坚持下去,我以为我看到的是西类牙语网页,所以我更改了页脚选择器中的语言,但它没有改变。在这一点上,我假设是在项目语言中设置的。

回到划时代的尝试。考虑到我的项目也在使用实时数据库,我尝试这样设置:

Map<String, Object> map = new HashMap<>();
map.put("timestamp", ServerValue.TIMESTAMP);
reference.update(map);

它确实上传了一些东西,但那只是废话。

enter image description here

我认为使用纪元作为服务器端时间戳是一种更好的标准方法,之后每个客户端都可以将其转换为用户方便和语言环境。

可以将 epoch by 设置为 Firestore 中的服务器值吗?

更新

标记为正确的答案让我得到了一些有趣的发现,我想分享这些发现,以便处于相同情况的其他人可以从中受益:

  • 不需要设置纪元,因为 FieldValue.serverTimestamp() 它是数据库处理的日期对象,我们在控制台中看到的只是一种友好的显示方式.
  • 由于 FieldValue.serverTimestamp() 是一个日期对象,如果您添加 orderBy("timestamp", Query.Direction.DESCENDING)<,它可以像任何其他时间戳一样排序 到您的查询(或 Query.Direction.ASCENDING),它将正确排序结果。
  • 关于 @34m0 的评论,这是正确的,客户不应该关心设置创建时间的逻辑,但它应该在函数中完成。

最佳答案

通过使用 FieldValue.serverTimestamp() 设置 Firestore 字段产生的对象是 java.util.Date 的实例.当您稍后读取该值时,您可以使用 getTime() 获取纪元时间.

例如,对于这样创建的文档:

Map<String, Object> doc = new HashMap<>();
doc.put("timestamp", FieldValue.serverTimestamp());

结果值可以这样读:

docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
DocumentSnapshot snapshot = task.getResult();
if (snapshot != null) {
Map<String,Object> map = snapshot.getData();
Date date = (Date) map.get("timestamp");
Log.d(TAG, "date=" + date);
Log.d(TAG, "time=" + date.getTime());
} else {
Log.d(TAG, "No such document");
}
} else {
Log.d(TAG, "get() failed with ", task.getException());
}
}
});

关于android - 如何使用服务器时间在 Firestore 中设置纪元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46851220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com