📅  最后修改于: 2023-12-03 14:53:43.320000             🧑  作者: Mango
在 Firestore 中,存储日期和时间的首选格式是 Timestamp。但在实际开发中,我们通常需要将时间戳转换为具有可读格式的日期和时间。本文将介绍如何在 Dart 中将 Firestore 时间戳转换为 datetime。
首先,我们需要在 pubspec.yaml
文件中添加 cloud_firestore
和 intl
依赖。
dependencies:
cloud_firestore: any
intl: any
然后,在需要使用 Firestore 时间戳的地方引入以下库。
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:intl/intl.dart';
Firestore 中的时间戳可以使用 Timestamp.toDate()
方法将其转换为 DateTime
类型。 DateTime
类型中包含日期,时间和时区等相关信息。
以下是将 Firestore 时间戳转换为 datetime 的示例代码。
DocumentSnapshot documentSnapshot = await FirebaseFirestore.instance.collection('collectionName').doc('documentId').get();
Timestamp timestamp = documentSnapshot.data()['timestampField'];
DateTime dateTime = timestamp.toDate();
但是,日期和时间在大多数情况下都需要进行格式化。在 Dart 中,我们可以使用 Intl
包来格式化日期和时间。
我们可以使用 DateFormat
类来对 DateTime
类型的日期和时间进行格式化。以下是几个常用的格式化选项。
String formattedDate = DateFormat('yyyy-MM-dd HH:mm:ss').format(dateTime);
此格式可以生成具有以下格式的字符串:2022-01-01 12:00:00
String formattedDate = DateFormat('yyyy年MM月dd日 HH:mm:ss').format(dateTime);
此格式可以生成具有以下格式的字符串:2022年01月01日 12:00:00
String formattedDate = DateFormat('MMM dd, yyyy - HH:mm').format(dateTime);
此格式可以生成具有以下格式的字符串:Jan 01, 2022 - 12:00
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:intl/intl.dart';
void main() async {
DocumentSnapshot documentSnapshot = await FirebaseFirestore.instance.collection('collectionName').doc('documentId').get();
Timestamp timestamp = documentSnapshot.data()['timestampField'];
DateTime dateTime = timestamp.toDate();
String formattedDate = DateFormat('yyyy年MM月dd日 HH:mm:ss').format(dateTime);
print(formattedDate);
}
在 Dart 中,我们可以使用 Timestamp.toDate()
方法将 Firestore 时间戳转换为 datetime,然后使用 Intl
包来格式化日期和时间。如果您有任何疑问,请随时在评论中提出!