使用SimpleDateFormat本地化自定义日期格式Xamarin.Android

时间:2018-08-03 14:13:46

标签: android date xamarin.android localization simpledateformat

我正在尝试使用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使用自定义日期格式本地化日期吗?

0 个答案:

没有答案