java - 如何解决时间戳java + firestore问题?

标签 java android google-cloud-firestore timestamp

我正在创建一个基于 firestore 和 java android 的聊天应用程序 ,根据 https://firebase.google.com/docs/reference/android/com/google/firebase/Timestamp 按时间戳对聊天进行排序

但是排序每次都取决于设备时间,即使设备上的时间是错误的,这让我很失望,请帮助!!

<小时/>

我的上传时间戳代码:

Timestamp dd= Timestamp.now();
long tt=dd.getSeconds();
        hashMap.put("ServerTimes",tt);

我的下载时间戳代码:

@Override
    public void onBindViewHolder(@NonNull final MessageAdapter.ViewHolder holder, int position) {

Chat chat = mChat.get(position);
       long date = (long) chat.getServerTimes();

        Date date3 = new Date ();
        date3.setTime(date*1000);


        SimpleDateFormat format1 = new SimpleDateFormat("dd/MM/yyyy EEE");
        SimpleDateFormat format2 = new SimpleDateFormat("h:mm:s a");

        String dateDisplay1 = format1.format(date3);
        String dateDisplay2 = format2.format(date3);
String DateTime= dateDisplay1+" -- "+dateDisplay2;

我的排序代码:

  private void readMessages(final String myEmail, final String OtherUserEmail, final String imageUrl) {
            final List<Chat> mChat = new ArrayList<>();
    referenceContent.orderBy("ServerTimes", Query.Direction.ASCENDING) .addSnapshotListener(new EventListener<QuerySnapshot>() {
                @Override
                public void onEvent(@Nullable QuerySnapshot queryDocumentSnapshots, @Nullable FirebaseFirestoreException e) {
................

最佳答案

如果您不想依赖客户端时间戳,可以告诉 Firestore write a server-side timestamp 。从该文档链接:

// Update the timestamp field with the value from the server
Map<String,Object> updates = new HashMap<>();
updates.put("timestamp", FieldValue.serverTimestamp());

docRef.update(updates).addOnCompleteListener(new OnCompleteListener<Void>() {
  ...

关于java - 如何解决时间戳java + firestore问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57128844/

相关文章:

ios - 如何使用 Firestore 中的对象将数据设置为数组

java - socket 乱七八糟

java - JAXB - 带有 java 注释的编码

android - 从 Activity 外部处理 onActivityResult

android - 如何将指数写入 TextView ?

firebase - 为什么Firebase数据库(Firestore)不添加文档

java - 使用 printStackTrace 包含外部库的日志

java - 解析 XML 并转换为集合

android - 如果调用了 onApplicationDisconnected,如何断开 Android 设备与 Chromecast 的连接

node.js - 如何仅在更新字段时触发 firebase 云功能?