【发布时间】:2019-03-13 08:42:03
【问题描述】:
我正在尝试格式化 DateTime 结果并在用户当前的设备区域设置中显示给用户。
目前我可以显示整个DateTime,如下所示:
2018-10-08 16:08:37.464112
或者通过像这样指定确切的格式:
DateFormat("dd.MM.yyyy").format(DateTime.now())
结果如下:
08.10.2018
我对这个解决方案的问题是,虽然这种格式在欧盟可能是可以接受的;在例如美国(和许多其他国家)他们习惯于不同的日期格式,例如
2018 年 10 月 8 日
我的问题是:如何以用户当前语言环境的格式只返回日期(而不是时间)?
回答:
需要检索当前语言环境并将其传递给格式函数。我正在使用自定义本地化类,但使用开箱即用的解决方案它看起来像这样:
DateFormat.yMMMd(Localizations.localeOf(context)).format(result);
【问题讨论】:
-
您可以将语言环境传递给
DateFormat,例如format = new DateFormat.yMMMd("en_US");。另见docs.flutter.io/flutter/intl/DateFormat-class.html、flutter.io/tutorials/internationalization -
将其作为单独的文章标记为答案。
-
对我不起作用,因为
localeOf没有返回字符串,所以我这样做了,它起作用了:var local = Localizations.localeOf(context).toString(); var formattedDate = DateFormat.yMMMd(local).format(myDate);
标签: datetime dart flutter string-formatting