В моем приложении для Android я показываю List<Object>, он содержит значения Нить, инт и Отметка времени, и я не знаю, какой элемент является отметкой времени.
Теперь это выглядит так: Отметка времени (секунды = 1556208432, наносекунды = 754000000)
Что я хочу сделать, так это разобрать это в читаемый формат даты.
Вот код, который я пробовал:
TextView t2 = view.findViewById(android.R.id.text2);
String tS2 = String.valueOf(values.get(position));
if (tS2.contains("Timestamp(seconds = ")) {
long ts = Timestamp.parse(tS2);
Date date = new Date(ts);
Log.d(TAG, "date: "+date);
} else {
t2.setText(tS2);
}
И проанализируйте его с помощью SimpleDateFormat, например:
String myFormat = "yyyy MMM dd";
SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.ENGLISH);
t2.setText(sdf.format(something));
Я получаю эту ошибку:
java.lang.IllegalArgumentException at java.util.Date.parse
РЕДАКТИРОВАТЬ1:
Он умирает с ошибкой ниже, когда доходит до части даты.
Object time = values.get(position);
com.google.firebase.Timestamp ts = (com.google.firebase.Timestamp) time;
String str = ts.toString();
Date date = new Date(Long.parseLong(str));
java.lang.NumberFormatException: For input string: "Timestamp(seconds=1556208432, nanoseconds=754000000)"
@matanper Обновил мой вопрос




Вы конвертируете timestamp в string, который не будет преобразовывать хранящееся в нем значение в строку, а будет описывать сам объект.
Чтобы получить дату временной метки Firebase, просто вызовите toDate() на ней.
Для получения дополнительной информации Проверь это
Какая строка выдает ошибку?