我试图格式化DateTime
结果,并将其以用户当前设备语言环境的形式显示给用户。
目前我可以显示完整的DateTime
,例如:
2018-10-08 16:08:37.464112
或者通过指定确切的格式来显示:
DateFormat("dd.MM.yyyy").format(DateTime.now())
导致以下结果:
2018年10月8日
我对这个解决方案的问题在于,尽管这种格式可能在欧盟是可接受的;但例如在美国(和许多其他国家),他们习惯于不同的日期格式,例如:
2018/10/08
我的问题是:如何以当前用户所在地区的格式(只返回日期而非时间)返回日期?
答案:
需要获取当前地区并将其传递给格式化函数。我正在使用自定义本地化类,但使用现成的解决方案会像这样:
DateFormat.yMMMd(Localizations.localeOf(context)).format(result);
DateFormat
中:format = new DateFormat.yMMMd("en_US");
。请参阅 https://docs.flutter.io/flutter/intl/DateFormat-class.html,https://flutter.io/tutorials/internationalization/。 - Günter ZöchbauerlocaleOf
没有返回字符串,所以我做了这个,然后它就起作用了:var local = Localizations.localeOf(context).toString(); var formattedDate = DateFormat.yMMMd(local).format(myDate);
- Cold_Class