在Silverlight中以XAML格式日期/时间


70

我有一个Silverlight 4应用程序。我有一个绑定到UI的C#DateTime对象。我希望此DateTime的格式为dd/mm/yyyy时间(TimeZone)。例如,今天将显示为

04/07/2011 at 01:13 p.m. (EST)

有办法XAML吗?还是我需要建造一个转换器?

Answers:


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

会回报你

2011/04/07下午1:28(-04)


12
我喜欢这些F〜€#〜€奇怪的字符串格式...到底谁能召回它们(谈论{} 0:part)。
伊格纳西奥·索勒·加西亚

8
这是正确的,除了格式字符串的引号应为单引号<TextBlock Text =“ {Binding Date,StringFormat = {} {0:'MM / dd / yyyy a \\ th:mm tt'}}”“ />
Dude0001

1
我必须将单引号放在不同的位置:Text =“ {Binding startDate,StringFormat ='{} {0:MM / dd / yy}'}”
JBrooks 2013年

1
如果您使用Label而不是TextBlock,请记住,您需要使用ContentStringFormat而不是设置Binding StringFormat。
kjhf

所有这些都适用于文本块或文本框,但在日期选择器本身内,格式不起作用。任何想法如何在日期选择器中执行操作
WPFKK '19

62

您可以在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 17StringFormat=y : “April, 2004StringFormat=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/04StringFormat=’MMMM dd, yyyy g’ : “April 17, 2004 A.D.”
StringFormat=’hh:mm:ss.fff tt’ : “01:52:45.000 PM”

10

您也可以使用

StringFormat=d

在datagrid列中显示日期时间

最终它将是

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

输出将看起来像

在此处输入图片说明


如果我想要日/月/年怎么办?
javi

使用StringFormat = dd-MMMM-yy
atik sarker 2014年

6

在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\}'}">

6

C#:试试看

  • yyyy(yy / yyy)-年
  • MM-月(如'03'),MMMM-月(如'March')
  • dd-天(如09),ddd / dddd-天(周日/周日)
  • 时-小时12(AM / PM),时-小时24
  • 毫米-分钟
  • ss-秒

使用一些分度符,像这样:

  1. MessageBox.Show(DateValue.ToString(“ yyyy-MM-dd”));; 示例结果:“ 2014-09-30”
  2. 空格式字符串:MessageBox.Show(DateValue.ToString()); 示例结果:“ 30.09.2014 0:00:00”

MessageBox.Show(DateValue.ToString())此输出取决于执行它的Thread的区域性(如果未设置其系统区域性)
Felix D.17年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.