我正在尝试使用Xamarin.Android使用自定义格式对日期进行本地化。我希望显示有关用户区域设置的日期。当我将Android设备上的语言从英语更改为西班牙语/法语时,我仍然获得相同的日期格式
var jDate = new Java.Util.Date(dto.ToUniversalTime().ToUnixTimeMilliseconds());
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"), Locale.Default);
return $"{sdf.Format(jDate)}";
输出为:
03-08-2018
无论手机上使用哪种语言
我知道我将其明确设置为日期格式,但是无论我采用哪种格式,都不会遵守语言环境。
我试图实现类似这样的东西:
enum DateTimeStyle { Short, Medium, Full, Long, None };
int GetDateTimeFormat(DateTimeStyle style)
{
int dateTimeStyle;
switch (style)
{
case DateTimeStyle.Medium:
dateTimeStyle = Java.Text.DateFormat.Medium;
break;
case DateTimeStyle.Full:
dateTimeStyle = Java.Text.DateFormat.Full;
break;
case DateTimeStyle.Long:
dateTimeStyle = Java.Text.DateFormat.Long;
break;
case DateTimeStyle.Short:
default:
dateTimeStyle = Java.Text.DateFormat.Short;
break;
}
return dateTimeStyle;
}
string LocalizeDateTime(DateTimeOffset dto, DateTimeStyle dateStyle, DateTimeStyle timeStyle)
{
var dateFormat = Java.Text.DateFormat.GetDateInstance(GetDateTimeFormat(dateStyle));
var timeFormat = Java.Text.DateFormat.GetTimeInstance(GetDateTimeFormat(timeStyle));
var jDate = new Java.Util.Date(dto.ToUniversalTime().ToUnixTimeMilliseconds());
return $"{dateFormat.Format(jDate)} {timeFormat.Format(jDate)}";
}
尽管此解决方案确实尊重语言环境,但这不是我想要的,因为当我想要自定义格式(例如“ 8月3日,星期四”)时,它将返回整个日期字符串。
还有另一种方法可以使用Xamarin.Android使用自定义日期格式本地化日期吗?