我有一个Silverlight 4应用程序。我有一个绑定到UI的C#DateTime对象。我希望此DateTime的格式为dd/mm/yyyy
时间(TimeZone)。例如,今天将显示为
04/07/2011 at 01:13 p.m. (EST)
有办法XAML
吗?还是我需要建造一个转换器?
Answers:
<TextBlock Text="{Binding Date, StringFormat='{}{0:MM/dd/yyyy a\\t h:mm tt}'}" />
会回报你
2011/04/07下午1:28(-04)
Label
而不是TextBlock
,请记住,您需要使用ContentStringFormat
而不是设置Binding StringFormat。
您可以在Silverlight 4中使用StringFormat提供绑定到的值的自定义格式。
日期格式具有多种选择。
对于“ 2004年4月17日,下午1:52:45”的日期时间
您可以使用一组标准格式(标准格式)…
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”
…或您可以使用字母(自定义格式)创建自己的日期格式
StringFormat=’MM/dd/yy’ : “04/17/04”
StringFormat=’MMMM dd, yyyy g’ : “April 17, 2004 A.D.”
StringFormat=’hh:mm:ss.fff tt’ : “01:52:45.000 PM”
您也可以使用
StringFormat=d
在datagrid列中显示日期时间
最终它将是
<sdk:DataGridTextColumn Binding="{Binding Path=DeliveryDate,StringFormat=d}" Header="Delivery date" Width="*" />
输出将看起来像
在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\}'}">
C#:试试看
使用一些分度符,像这样:
MessageBox.Show(DateValue.ToString())
此输出取决于执行它的Thread的区域性(如果未设置其系统区域性)