Flutter:正确显示本地日期时间

Flutter: Display local datetimes correctly

假设我有一个 DateTime 对象,我想以正确的本地格式显示它。

如果我在 德语 设备上执行以下操作,我会得到:

dateTime.toLocal().toString()
// Prints
2022-05-28 23:29:19.518

但是,对于 德语 设备,我希望或希望有更多这样的东西:28.5.2022 23:29:19

我知道我可以格式化 DateTime 但这只是针对某个 locale.

的硬编码

奇怪的是,我在 Whosebug 上找到的所有解决方案要么是对格式进行硬编码,要么只适用于 Dart,而不适用于 Flutter。

在 Flutter 中显示本地 datetime 的正确方法是什么?

您可以使用此包 intl 并像

这样本地化日期
var format = DateFormat.yMd('ar');
var dateString = format.format(DateTime.now());

使用这里已经提到的 intl 包,到目前为止这对我来说效果很好:

DateFormat dateTimeFormat = DateFormat.jm(Localizations.localeOf(context).toString());
DateTime dt = DateTime.fromMicrosecondsSinceEpoch(entity.syncDateTime);
dateTimeFormat.format(dt);

要获得尚不支持的输出,例如,将 ymd 格式的 DateTime 字符串与 jm 格式的 DateTime 字符串连接。