📜  将 firestore 时间戳转换为 datetime - Dart (1)

📅  最后修改于: 2023-12-03 14:53:43.320000             🧑  作者: Mango

将 Firestore 时间戳转换为 datetime - Dart

在 Firestore 中,存储日期和时间的首选格式是 Timestamp。但在实际开发中,我们通常需要将时间戳转换为具有可读格式的日期和时间。本文将介绍如何在 Dart 中将 Firestore 时间戳转换为 datetime。

准备

首先,我们需要在 pubspec.yaml 文件中添加 cloud_firestoreintl 依赖。

dependencies:
  cloud_firestore: any
  intl: any

然后,在需要使用 Firestore 时间戳的地方引入以下库。

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:intl/intl.dart';
将 Firestore 时间戳转换为 datetime

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 包来格式化日期和时间。

格式化 datetime

我们可以使用 DateFormat 类来对 DateTime 类型的日期和时间进行格式化。以下是几个常用的格式化选项。

yyyy-MM-dd HH:mm:ss
String formattedDate = DateFormat('yyyy-MM-dd HH:mm:ss').format(dateTime);

此格式可以生成具有以下格式的字符串:2022-01-01 12:00:00

yyyy年MM月dd日 HH:mm:ss
String formattedDate = DateFormat('yyyy年MM月dd日 HH:mm:ss').format(dateTime);

此格式可以生成具有以下格式的字符串:2022年01月01日 12:00:00

MMM dd, yyyy - HH:mm
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 包来格式化日期和时间。如果您有任何疑问,请随时在评论中提出!