タイムスタンプがフラッターファイアストアスナップショットのaa Timestamp(seconds=1560523991, nanoseconds=286000000)
を返す
適切にフォーマットされた日付と時刻を印刷したい
DateTime.now()を使用して新しいレコードを作成し、Firestoreスナップショットを使用して取得しながら、現在のDateTimeをFireStoreに格納しますが、フォーマットを返します
データを保存するためのコード
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)=> print(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())]);
....
エラースローは無効な日付形式です。
出力は「2019年1月17日、午後2時19分」と予想しています。
ここが道です!
FirestoreはTimestamp(seconds = 1560523991、nanoseconds = 286000000)のようなTimeStampを返します。
これは次のように解析できます
Timestamp t = document['timeFieldName'];
DateTime d = t.toDate();
print(d.toString()); //2019-12-28 18:48:48.364
次のように、Firestoreタイムスタンプオブジェクトを直接DateTimeに変換できます。
DateTime myDateTime = (snapshot.data.documents[index].data['timestamp']).toDate();
これにより、FirestoreのタイムスタンプがDartのDateTime形式で返されます。 DateTime
オブジェクトを変換するには、_ intl パッケージのDateFormat
クラスを使用できます。取得したDateTimeオブジェクトを使用して、次のような選択した形式を取得できます。
DateFormat.yMMMd().add_jm().format(myDateTime);
このコードは、次のような出力を生成します。
Apr 21, 2020 5:33 PM
そうする:
DateFormat.yMMMd().add_jm().format(DateTime.parse(snapshot.data.documents[index].data['timestamp'].toDate().toString())]
DateTimeをFirestoreに送信しても、FirestoreからUNIXタイムスタンプを取得します。
DateTime.fromMillisecondsSinceEpoch(timestamp * 1000);
を使用して、FirestoreからDateTimeを解析できます
DateTimeクラスには、文字列を返す2つのオプションがあります。 toIso8601String()
またはtoString()
必要なものを選択します。または例を使用します。 DateTime.now()。hour;を取得して独自の出力を作成します。
詳細については、次を確認してください https://api.dartlang.org/stable/2.4.0/Dart-core/DateTime-class.html