如何使用 android EditText 和 DateTimePicker 对话框在 firestore 上存储时间戳
How to store timestamp on firestore using android EditText and DateTimePicker Dialog
我试图使用 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);
}
});
日期存储为字符串:
您可以将日期对象保存为时间戳
在你的情况下,你可以将字符串解析为日期对象并将其直接保存为 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 文档中保存为时间戳
我试图使用 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);
}
});
日期存储为字符串:
您可以将日期对象保存为时间戳 在你的情况下,你可以将字符串解析为日期对象并将其直接保存为 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 文档中保存为时间戳