android - 如何使用 android EditText 和 DateTimePicker 对话框在 firestore 上存储时间戳

标签 android google-cloud-firestore

我试图使用 EditText 和 DateTimePicker 对话框将日期保存在 firestore 数据库中。问题是,日期在服务器上存储为字符串。如果我使用 FieldValue.serverTimestamp(),它只会在字段中保存服务器时间戳,但我想将 DateTimePicker 对话框返回的日期保存为时间戳。

FirebaseFirestore db2 = FirebaseFirestore.getInstance();
Map<String, Object> addAnimal = new HashMap<>();
addAnimal.put("dob", editText.getText());
db.collection("users").document("animals")
    .set(addAnimal)
    .addOnSuccessListener(new OnSuccessListener<Void>() {
        @Override
        public void onSuccess(Void aVoid) {
            Log.d(TAG, "DocumentSnapshot successfully written!");
        }
    })
    .addOnFailureListener(new OnFailureListener() {
        @Override
        public void onFailure(@NonNull Exception e) {
            Log.w(TAG, "Error writing document", e);
        }
    });

日期被存储为字符串:

Date Stored as String

最佳答案

您可以将日期对象保存为时间戳 在您的情况下,您可以将字符串解析为日期对象并将其直接保存为 firestore 文档中的字段,例如您可以执行如下操作:-

首先:将有效的日期字符串转换为日期对象

static final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
public Date getDateFromString(String datetoSaved){

   try {
       Date date = format.parse(datetoSaved);
       return date ;
   } catch (ParseException e){
       return null ;
   }

}

然后将日期对象保存为 firestore 文档中的字段

public void savetoDatabase(){

    FirebaseFirestore db = FirebaseFirestore.getInstance();

    Map<String,Object> addAnimal = new HashMap<>();
    addAnimal.put("dob",getDateFromString("2017-10-15T09:27:37Z")); 

    db.collection("users").document("animals").set(addAnimal);

}

您可以选择任何其他格式以获取更多信息,查看如何解析日期以及 java.util.Date 对象的工作方式。

如果您运行上面的代码,日期将在 firestore 文档中保存为时间戳

enter image description here

关于android - 如何使用 android EditText 和 DateTimePicker 对话框在 firestore 上存储时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47252233/

相关文章:

android - AVD 加载失败

android - 按钮文本在android中自动更改为大写字母

swift - 对 Firestore GetDocuments 请求的范围和 Swift 的内循环感到非常困惑

firebase - 延迟初始化错误 : Field '_userData@32329253' has not been initialized

firebase - 您应该从 'firebase' 还是 'firebase/app' 导入 firebase 类型?

flutter - 创建 ListView 并从 flutter 上的 firestore 获取数据

java - 静态访问常用函数?

android - 在 Android Canvas 上绘制空心圆

android - IntelliJ,如何通过网络(wifi)使用ADB

javascript - Vue.js - 引用模式内的输入来更新 Firestore 数据库