飞镖/颤振默认日期格式

时间:2018-10-08 16:11:51

标签: datetime dart flutter string-formatting

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

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

  

2018-10-08 16:08:37.464112

或通过指定像这样的确切格式:

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

其结果如下:

  

2018年10月10日

我对这种解决方案的问题是,尽管这种格式在欧盟可能是可以接受的。在例如美国(和许多其他国家/地区)将它们用于其他日期格式,例如

  

10/08/2018

我的问题:如何仅以当前语言环境的格式向用户返回日期(而不是时间)?

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

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

2 个答案:

答案 0 :(得分:4)

我知道已经回答了这个问题,但是如果有人想使用实际的设备语言环境而不是硬编码的语言环境:

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

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

如果要使用自定义日期格式,则需要根据要支持的所有语言环境创建自己的开关/案例。

答案 1 :(得分:2)

您可以像

一样将语言环境传递给DateFormat
format = DateFormat.yMMMd("en_US");

另请参见