如何在 Dart 中获取本地化的“一个字母”工作日缩写?

Som*_*Jan 5 date-format abbreviation weekday dart flutter

如果我这样做

\n
DateTime dateTime = DateTime(2022, 5, 1); // Sunday\nprint(DateFormat("E").format(dateTime));\n
Run Code Online (Sandbox Code Playgroud)\n

太阳将被打印到控制台。这正是我所期望的。

\n

如果我更改系统语言,这也有效。

\n

如何打印本地化的One Letter 工作日缩写

\n

例如MTWTSS

\n

我以为我可以使用“子字符串”获得第一个字母,但它不适用于所有语言。例如,西班牙语工作日为:Lunes、Martes、Mi\xc3\xa9rcoles、Jueves、Viernes、S\xc3\xa1bado 和 Domingo,“Mi\xc3\xa9rcoles”的第一个字母是 X 而不是 M,以区别于“貂”。

\n

在 Java 中,您可以执行以下操作来获取 One Letter 缩写:

\n
new SimpleDateFormat("EEEEE", Locale.getDefault());\nsimpleDateFormat.format(date);\n
Run Code Online (Sandbox Code Playgroud)\n

对于西班牙语,输出将为LMXJVSD

\n

Som*_*Jan 3

我找到了我的问题的解决方案。也许它对某人有帮助。

var wd = DateFormat.EEEE().dateSymbols.NARROWWEEKDAYS;
print(wd);
Run Code Online (Sandbox Code Playgroud)

西班牙语的输出 [D、L、M、X、J、V、S]

这适用于我测试过的所有语言(日语、德语、英语、波兰语、西班牙语、意大利语等)