Как форматировать дату и время в XAML в приложении Xamarin

У меня есть код XAML ниже.

<Label Text="{Binding Date}"></Label>
<Label Text="{Binding Time}'}"></Label>

Я хочу получить результат, как сентябрь 12,2014 2:30 вечера.

Ответы

Ответ 1

Измените свой код на:

<Label Text="{Binding Date, StringFormat='{0:MMMM dd, yyyy}'}"></Label>
<Label Text="{Binding Time, StringFormat='{}{0:hh\\:mm}'}"></Label>

Ответ 2

Сделайте обычную реализацию IValueConverter:

public class DatetimeToStringConverter : IValueConverter
{
    #region IValueConverter implementation

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value == null)
            return string.Empty;

        var datetime = (DateTime)value;
        //put your custom formatting here
        return datetime.ToLocalTime().ToString("g");
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException(); 
    }

    #endregion
}

Затем используйте его так:

<ResourceDictionary>
    <local:DatetimeToStringConverter x:Key="cnvDateTimeConverter"></local:DatetimeToStringConverter>
</ResourceDictionary>

...

<Label Text="{Binding Date, Converter={StaticResource cnvDateTimeConverter}}"></Label>
<Label Text="{Binding Time, Converter={StaticResource cnvDateTimeConverter}}"></Label>

Ответ 3

Используйте стандартные .NET Формат даты.

Чтобы получить

12 сентября 2014 года 2:30 вечера

используйте что-то вроде

MMMM d, yyyy h:mm tt