本文将介绍几种在 Flutter(和 Dart)中格式化 DateTime 的方法。第一种方法是从头开始编写格式化函数,后者则使用第三方库实现。
使用自定义代码
在大多数情况下,我们可以用几行代码实现所需的功能。下面的示例中,我们创建了一个名为 simplyFormat
的可复用函数,它可以返回两种格式的结果:yyyy-MM-dd HH:mm:ss
(日期和时间)或 yyyy-MM-dd
(仅日期)。
代码和解释如下:
// 从头定义一个简单的格式化函数
String simplyFormat({required DateTime time, bool dateOnly = false}) {
String year = time.year.toString();
// 如果月份是 1 到 9,则在左侧添加 "0"
String month = time.month.toString().padLeft(2, '0');
// 如果日期是 1 到 9,则在左侧添加 "0"
String day = time.day.toString().padLeft(2, '0');
// 如果小时是 1 到 9,则在左侧添加 "0"
String hour = time.hour.toString().padLeft(2, '0');
// 如果分钟是 1 到 9,则在左侧添加 "0"
String minute = time.minute.toString().padLeft(2, '0');
// 如果秒数是 1 到 9,则在左侧添加 "0"
String second = time.second.toString().padLeft(2, '0');
// 如果只需要年份、月份和日期
if (dateOnly == false) {
return "$year-$month-$day $hour:$minute:$second";
}
// 返回 "yyyy-MM-dd" 格式
return "$year-$month-$day";
}
// 测试我们的函数
void main() {
DateTime currentTime = DateTime.now();
// 完整日期和时间
final result1 = simplyFormat(time: currentTime);
print(result1);
// 仅日期
final result2 = simplyFormat(time: currentTime, dateOnly: true);
print(result2);
// Kindacode.com
}
输出应为以下形式:
2023-01-08 06:10:13
2023-01-08
你可以将 simplyFormat
函数保存以便在其他项目中重用。它最大的优点是可以轻松自定义每一行代码,而不依赖外部库。
使用 date_format
包
date_format
是一个轻量级包,唯一的用途是提供一个简单的 API 用于格式化日期。
安装
运行以下命令,将包添加到 pubspec.yaml
文件中:
flutter pub add date_format
然后执行:
flutter pub get
示例
代码如下:
import 'package:date_format/date_format.dart';
void main() {
DateTime currentTime = DateTime.now();
String result1 = formatDate(currentTime, [yyyy, '/', mm, '/', dd]);
print(result1);
String result2 = formatDate(currentTime, [
yyyy,
'-',
mm,
'-',
dd,
' ',
HH,
':',
mm,
]);
print(result2);
}
输出:
2023/01/28
2023-01-28 21:01
使用 intl
包
intl
是一个功能强大的包,提供了许多工具,包括格式化 DateTime。
安装
运行以下命令安装最新版本:
flutter pub add intl
然后执行:
flutter pub get
示例:
import 'package:intl/intl.dart';
void main() {
DateTime currentTime = DateTime.now();
// 使用 "dd/MM/yyyy HH:mm" 格式
print(DateFormat.yMd().add_jm().format(currentTime));
// 仅日期
print(DateFormat.yMd().format(currentTime));
}
输出:
1/8/2023 6:14 AM
1/8/2023
可以在该包的 API 参考页面找到更多高级选项。
使用 jiffy
包
jiffy
是另一个优秀的插件,它提供了解析、操作、查询和格式化日期的工具。
安装
flutter pub add jiffy
flutter pub get
示例:
import 'package:jiffy/jiffy.dart';
void main() {
DateTime currentTime = DateTime.now();
String result1 = Jiffy(currentTime).format('yyyy-MMMM-do, h:mm:ss a');
print(result1);
String result2 = Jiffy(currentTime).format('MMM do yy');
print(result2);
}
输出:
2023-January-28o, 9:34:25 PM
Jan 28th 23
结论
本文介绍了几种在 Flutter 中格式化日期的方式,每种方式都很优雅且实用。
评论(0)