更改日期格式化程序的语言环境

lam*_*tat 4 dart flutter

我在我的应用程序中使用日期格式化程序来显示一些日期..但我希望这个日期以阿拉伯语显示..所以我尝试像这样更改格式化程序的语言环境:

var now = new DateTime.now();
var formatter = DateFormat.yMMMd("ar_SA");
String formatted = formatter.format(now);
print(formatted);
Run Code Online (Sandbox Code Playgroud)

但它不工作..

如果我把它改成这样:

var now = new DateTime.now();
var formatter = DateFormat.yMMMd("en_US");
String formatted = formatter.format(now);
print(formatted);
Run Code Online (Sandbox Code Playgroud)

会正常工作..但我希望日期以阿拉伯语显示..

如何实现这一目标?我希望日期是例如 ?? ????? ????.. 怎么做?

Rin*_*gil 9

您需要使用initializeDateFormatting来获取正确的日期格式化程序,如下所示:

initializeDateFormatting("ar_SA", null).then((_) {
      var now = DateTime.now();
      var formatter = DateFormat.yMMMd('ar_SA');
      print(formatter.locale);
      String formatted = formatter.format(now);
      print(formatted);
    });
Run Code Online (Sandbox Code Playgroud)

或者使用 async-await 你可以这样做:

await initializeDateFormatting("ar_SA", null);
var now = DateTime.now();
var formatter = DateFormat.yMMMd('ar_SA');
print(formatter.locale);
String formatted = formatter.format(now);
print(formatted);
Run Code Online (Sandbox Code Playgroud)

这导致我的以下输出:

ar
?? ?????? ????
Run Code Online (Sandbox Code Playgroud)