Dart / Flutter 默认日期格式
Dart / Flutter default date format
我正在尝试格式化 DateTime
结果并以用户当前的设备区域显示给用户。
目前我可以显示整个 DateTime
如下:
2018-10-08 16:08:37.464112
或者像这样指定确切的格式:
DateFormat("dd.MM.yyyy").format(DateTime.now())
结果如下:
08.10.2018
我对这个解决方案的问题是,虽然这种格式在欧盟可能是可以接受的;例如美国(和许多其他国家)他们习惯于不同的日期格式,例如
10/08/2018
我的问题是:如何return 以用户当前语言环境的格式仅向用户显示日期(而非时间)?
回答:
需要检索当前语言环境并将其传递给格式函数。我正在使用自定义本地化 class,但使用开箱即用的解决方案它看起来像这样:
DateFormat.yMMMd(Localizations.localeOf(context)).format(result);
您可以像
一样将区域设置传递给 DateFormat
format = DateFormat.yMMMd("en_US");
另见
我知道这已经得到解答,但如果有人想使用实际的设备区域设置而不是硬编码的区域设置:
DateFormat.yMMMd(Localizations.localeOf(context).languageCode).format(result);
重要,您需要在此处传递 String
而不是 Locale
对象。
如果您想要自定义日期格式,则需要根据您要支持的所有语言环境创建自己的 switch/case。
我正在尝试格式化 DateTime
结果并以用户当前的设备区域显示给用户。
目前我可以显示整个 DateTime
如下:
2018-10-08 16:08:37.464112
或者像这样指定确切的格式:
DateFormat("dd.MM.yyyy").format(DateTime.now())
结果如下:
08.10.2018
我对这个解决方案的问题是,虽然这种格式在欧盟可能是可以接受的;例如美国(和许多其他国家)他们习惯于不同的日期格式,例如
10/08/2018
我的问题是:如何return 以用户当前语言环境的格式仅向用户显示日期(而非时间)?
回答:
需要检索当前语言环境并将其传递给格式函数。我正在使用自定义本地化 class,但使用开箱即用的解决方案它看起来像这样:
DateFormat.yMMMd(Localizations.localeOf(context)).format(result);
您可以像
一样将区域设置传递给DateFormat
format = DateFormat.yMMMd("en_US");
另见
我知道这已经得到解答,但如果有人想使用实际的设备区域设置而不是硬编码的区域设置:
DateFormat.yMMMd(Localizations.localeOf(context).languageCode).format(result);
重要,您需要在此处传递 String
而不是 Locale
对象。
如果您想要自定义日期格式,则需要根据您要支持的所有语言环境创建自己的 switch/case。