如何在Xamarin应用程序中格式化XAML中的日期和时间

时间:2015-09-28 00:16:47

标签: datetime xamarin xamarin.forms

我在下面设置了XAML代码。

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

我想要结果如2014年9月12日下午2:30。

4 个答案:

答案 0 :(得分:67)

将您的代码更改为:

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

答案 1 :(得分:7)

制作自定义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>

答案 2 :(得分:6)

使用标准.NET Date Format说明符。

获得

  

2014年9月12日下午2:30

使用类似

的内容
MMMM d, yyyy h:mm tt

答案 3 :(得分:3)

<Label>

<Label.FormattedText>

<FormattedString>

<Span Text="{Binding Date, StringFormat='{0:MMMM dd, yyyy}'}"/>
<Span Text=" "/>
<Span Text="{Binding Time, StringFormat='{0:h:mm tt}'}"/>

</FormattedString>

</Label.FormattedText>

</Label>