简体   繁体   中英

How to convert Timestamp to DateTime from firebase with flutter

I have Timestamp item in firebase. I get the item from dart code timestamp type. It shows like 'Timestamp(seconds=1590903768, nanoseconds=26999000)' as it is.

I would like to show on my Application only Date like '2020-06-01' or '06-01'.

Please give me advice.

Timestamp class has a toDate function that converts it to a DateTime object. See this for more information. Any formatting you want to do in converting it to a string can be done more easily now with intl package formatters.

Example:

Timestamp stamp = Timestamp.now();
DateTime date = stamp.toDate();

You get back a map from firestore. Assuming you have named it "creationDate", you can convert the returned timestamp to a DateTime object using the toDate() dart function. The "simplest" way to format the datetime is to use the intl package

// Map From firestore
Map data = documentSnapshot.data();
var creationDate = data['creationDate'].toDate();

//Format using intl package
DateFormat _dateFormat = DateFormat('y-MM-d');
String formattedDate =  _dateFormat.format(dateTime);

You can convert Timestamp DataType to DateTime then formate the DateTime according to your requirements.

Example

add this following method in your dart file.

String formatTimestamp(Timestamp timestamp) {
  var format = new DateFormat('y-MM-d'); // 'hh:mm' for hour & min
  return format.format(timestamp.toDate());
}

then get the TimeStamp from FireStore and pass it into this method

print(formatTimestamp(doc.data['timestamp']));

OutPut

2021/01/11

I hope this will be helpfull !!

If you want Hours and minutes(hh:mm) from timestamp, Simply create following method which gives you string in return.

String convertTimestampToHm(Timestamp timestamp) {
var format = DateFormat('Hm'); // convert into hours and minutes
return format.format(timestamp.toDate());

}

NOTE: - You can always use Skeleton base on requiremrnt.

There are different ways to convert TimeStamp to DateTime which differs based on the scenario. I have summarize all the possible ways, Pick the one which suits your case !!


Conversion of Firebase timestamp to DateTime :

  1.  document['timeStamp'].toDate()
  2.  (document["timeStamp"] as Timestamp).toDate()
  3.  DateTime.fromMillisecondsSinceEpoch(document['timeStamp'].millisecondsSinceEpoch);
  4.  Timestamp.fromMillisecondsSinceEpoch(document['timeStamp'].millisecondsSinceEpoch).toDate();
  5. If timeStamp is in microseconds use:

     DateTime.fromMicrosecondsSinceEpoch(timestamp * 1000000);
  6. If timeStamp is in milliseconds use:

     DateTime.fromMillisecondsSinceEpoch(timestamp * 1000);
  7. Add the following function in your dart file.

     String formatTimestamp(Timestamp timestamp) { var format = new DateFormat('yyyy-MM-dd'); // <- use skeleton here return format.format(timestamp.toDate()); }

    call it as formatTimestamp(document['timestamp'])

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM