dart 使用混合区域设置格式日期

aiqt4smr  于 2023-10-13  发布在  其他
关注(0)|答案(2)|浏览(84)

我正在根据设备的区域设置日期格式。如果你有像en_USde_DE等“标准”区域设置,这是没有问题的。但是,如果用户将其电话语言设置为例如englisch(en)和地区,例如德国(DE),区域设置将是以下en_DE(非标准区域设置)。
如果我现在尝试用这个区域设置格式化日期,它将始终使用US(我认为是因为语言部分en):

String date = DateFormat.yMd('en_DE').format(DateTime.now());
print(date); // 7/13/2022

如果我只使用区域部分DE,这将适用于DE

String date = DateFormat.yMd('DE').format(DateTime.now());
print(date); // 13.07.2022

但对于区域设置en_US,这将不起作用:

String date = DateFormat.yMd('US').format(DateTime.now()); // Invalid argument(s): Invalid locale "US"

如何根据区域设置的区域部分格式化日期?

3phpmpom

3phpmpom1#

你可以在尝试接球中做到

String date = "";
String locale = 'en_US';
try{
 date = DateFormat.yMd('${locale.subString(3)}').format(DateTime.now());
}catch(e){
 date = DateFormat.yMd('$locale').format(DateTime.now());
}
print(date);
ssm49v7z

ssm49v7z2#

对于寻找混合日期格式(如阿拉伯日期格式和英文数字)的人,

2 أكتوبر 2023

也许这能帮

DateFormat.d('en').format(date) +
    DateFormat(' MMMM ').format(date) +
    DateFormat.y('en').format(date)

相关问题