在Silverlight的XAML中格式化date/时间

我有一个Silverlight 4应用程序。 我有一个C#DateTime对象,我绑定到我的用户界面。 我想这个date时间格式为dd/mm/yyyy时间(TimeZone)。 例如,今天会显示为

 04/07/2011 at 01:13 pm (EST) 

有没有办法做到这一点的XAML ? 或者我需要build立一个转换器?

 <TextBlock Text="{Binding Date, StringFormat='{}{0:MM/dd/yyyy a\\th:mm tt}'}" /> 

会回报你

04/07/2011 at 1:28 PM(-04)

您可以在Silverlight 4中使用StringFormat来提供您绑定的值的自定义格式。

date

date格式有很多选项。

对于“2004年4月17日1:52:45 PM”的date时间

您可以使用一组标准格式(标准格式)…

 StringFormat=f : “Saturday, April 17, 2004 1:52 PM” StringFormat=g : “4/17/2004 1:52 PM” StringFormat=m : “April 17” StringFormat=y : “April, 2004” StringFormat=t : “1:52 PM” StringFormat=u : “2004-04-17 13:52:45Z” StringFormat=o : “2004-04-17T13:52:45.0000000” 

…或者你可以使用字母(自定义格式)创build自己的date格式

 StringFormat='MM/dd/yy' : “04/17/04” StringFormat='MMMM dd, yyyy g' : “April 17, 2004 AD” StringFormat='hh:mm:ss.fff tt' : “01:52:45.000 PM” 

你也可以用

 StringFormat=d 

在date时间的datagrid列中显示

最后它会

  <sdk:DataGridTextColumn Binding="{Binding Path=DeliveryDate,StringFormat=d}" Header="Delivery date" Width="*" /> 

输出将看起来像

在这里输入图像说明

C#:试试这个

  • yyyy(yy / yyy) – 年
  • MM – 月(如'03'),MMMM – 月(如'March')
  • dd – 天(如09),ddd / dddd – 天(星期日/星期天)
  • 每小时12小时(上午/下午),每小时24小时
  • 毫米 – 分钟
  • 秒 – 秒

使用一些分隔符,如下所示:

  1. MessageBox.Show(DateValue.ToString( “YYYY-MM-DD”)); 示例结果:“2014-09-30”
  2. 空格式string:MessageBox.Show(DateValue.ToString()); 示例结果:“30.09.2014 0:00:00”

在SL5中我发现这个工作:

 <TextBlock Name="textBlock" Text="{Binding JustificationDate, StringFormat=dd-MMMM-yy hh:mm}"> <TextBlock Name="textBlock" Text="{Binding JustificationDate, StringFormat='Justification Date: \{0:dd-MMMM-yy hh:mm\}'}">