Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to store timestamp on firestore using android EditText and DateTimePicker Dialog

I was trying to save date on firestore database using EditText and DateTimePicker Dialog. The Problem is, date is getting stored as string on server. If I use the FieldValue.serverTimestamp() it only saves the server timestamp in the field but I want to save the date returned by DateTimePicker dialog as timestamp.

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);
        }
    });

The Date is getting stored as string:

Date Stored as String

like image 722
Sanjeet Pal Singh Avatar asked Nov 12 '17 18:11

Sanjeet Pal Singh


1 Answers

you can save Date object as timestamp in your case , you can parse the string to date object and save it directly as field in firestore document , for example you could do something like this :-

first : convert the valid date string to date object

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 ;
   }

}

then save the date object as field in firestore document

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);

}

you can choose any other format for more info check how to parse dates and how the java.util.Date object works .

if you runs the above code the date will saved as Timestamp in firestore document

enter image description here

like image 113
aboodrak Avatar answered Sep 28 '22 04:09

aboodrak