как напечатать метку времени Firestore как отформатированную дату и время во флаттере - PullRequest
0 голосов
/ 17 июня 2019

отметка времени возвращает aa Timestamp(seconds=1560523991, nanoseconds=286000000) в снимке флаттера пожарного магазина

Я хочу напечатать правильно отформатированные дату и время

Я использую DateTime.now () для хранения текущего DateTime в firestore при создании новых записей и извлечении его с помощью моментального снимка firestore, но он возвращает формат, в который я, как известно, преобразую в форматированное время даты, для форматирования я использую lib intl.dart

код для сохранения данных

d={'amount':amount,
  'desc':desc,
  'user_id':user_id,
  'flie_ref':url.toString(),
  'date':'${user_id}${DateTime.now().day}-${DateTime.now().month}-${DateTime.now().year}',
  'timestamp':DateTime.now()

return Firestore.instance.collection ('/ data'). Add (d) .then ((v) {return true; }) CatchError ((OnError) => печать (OnError)). });

Доступ с помощью

FutureBuilder(
              future: Firestore.instance
                  .collection('data')
                  .where('user_id', isEqualTo:_user_id)
                  .getDocuments(),
              builder: (BuildContext context,
                  AsyncSnapshot<QuerySnapshot> snapshot) {
                if (!snapshot.hasData)
                  return Container(
                      child: Center(child: CircularProgressIndicator()));
                return ListView.builder(
                    itemCount: snapshot.data.documents.length,
                    itemBuilder: (BuildContext context, int index) {
                      return Column(
                        children: <Widget>[
   Text(DateFormat.yMMMd().add_jm().format(DateTime.parse(snapshot.data.documents[index].data['timestamp'].toString())]);
....

ошибка: неверный формат даты.

Я ожидаю, что вы получите: «17 января 2019, 14:19»

Ответы [ 2 ]

0 голосов
/ 17 июня 2019

параметр отметки времени - время в секундах

String formatTimestamp(int timestamp) {
      var format = new DateFormat('d MMM, hh:mm a');
      var date = new DateTime.fromMillisecondsSinceEpoch(timestamp * 1000);
      return format.format(date);
    }

Пожалуйста, отметьте этот ответ для международных форматов дат

Надеюсь, это поможет!

0 голосов
/ 17 июня 2019

Вы получите метку времени Unix из хранилища, даже если вы отправите DateTime в хранилище.

Вы можете проанализировать DateTime из Firestore с помощью DateTime.fromMillisecondsSinceEpoch(timestamp * 1000);

У класса DateTime есть две опции:вернуть жало.toIso8601String() или toString() выберите тот, который вам нужен.Или используйте, например.. DateTime.now () час;чтобы получить наш и создать свой собственный выход.

Для получения дополнительной информации: Проверьте https://api.dartlang.org/stable/2.4.0/dart-core/DateTime-class.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...