飞镖/颤振默认日期格式



我正在尝试格式化DateTime结果并以用户当前设备区域设置显示给用户。

目前,我可以显示整个DateTime,如下所示:

2018-10-08 16:08:37.464112

或者通过指定确切的格式,如下所示:

DateFormat("dd.MM.yyyy").format(DateTime.now())

这导致以下结果:

08.10.2018

我对这个解决方案的问题是,虽然这种格式在欧盟可能是可以接受的;例如在美国(和许多其他国家(,它们习惯于不同的日期格式,例如

2018/8/10

我的问题是:如何以当前区域设置的格式仅向用户返回日期(而不是时间(?


需要检索当前语言环境并将其传递给格式函数。我正在使用自定义本地化类,但使用开箱即用的解决方案,它看起来像这样:

DateFormat.yMMMd(Localizations.localeOf(context)).format(result);

我知道这已经回答了,但是如果有人想使用实际的设备区域设置而不是硬编码的区域设置:

DateFormat.yMMMd(Localizations.localeOf(context).languageCode).format(result);

重要提示,您需要在此处传递String而不是Locale对象。

如果要具有自定义日期格式,则需要根据要支持的所有区域设置创建自己的开关/机箱。

您可以将区域设置传递给DateFormat例如

format = DateFormat.yMMMd("en_US");

参见

  • https://docs.flutter.io/flutter/intl/DateFormat-class.html
  • https://flutter.io/tutorials/internationalization

最新更新