моя проблема в том, что когда я пытаюсь получить в своем приложении на телефоне, я получаю текущее время, а не фактическое время TIMESTAMP.
Это происходит потому, что внутри обратного вызовавы на самом деле создаете новый Date
объект, а не получаете его из базы данных.Чтобы решить эту проблему, используйте следующий метод:
public static String getTimeDate(long timestamp){
try{
DateFormat dateFormat = getDateTimeInstance();
Date netDate = (new Date(timestamp));
return dateFormat.format(netDate);
} catch(Exception e) {
return "date";
}
}
И следующие строки кода для получения даты из базы данных:
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
long date = ds.getValue(Long.class);
Log.d(TAG, getTimeDate(date));
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
}
};
users.child(user.getUid()).child("Date").addListenerForSingleValueEvent(valueEventListener);
Редактировать:
Чтобы использовать форматированную дату, используйте следующий метод:
public static String getTimeDate(long timestamp){
try{
Date netDate = (new Date(timestamp));
SimpleDateFormat sfd = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss", Locale.getDefault());
return sfd.format(netDate);
} catch(Exception e) {
return "date";
}
}