Format Date/Time in XAML in Silverlight
I have a Silverlight 4 application. I have a C# DateTime object that I'm binding to my UI. I want this DateTime to be in the format of dd/mm/yyyy
time (TimeZone). For inst开发者_JS百科ance, today would be displayed as
04/07/2011 at 01:13 p.m. (EST)
Is there a way to do this XAML
? Or do I need to build a converter?
<TextBlock Text="{Binding Date, StringFormat='{}{0:MM/dd/yyyy a\\t h:mm tt}'}" />
will return you
04/07/2011 at 1:28 PM (-04)
You can use StringFormat in Silverlight 4 to provide a custom formatting of the value you bind to.
Dates
The date formatting has a huge range of options.
For the DateTime of “April 17, 2004, 1:52:45 PM”
You can either use a set of standard formats (standard formats)…
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”
… or you can create your own date formatting using letters (custom formats)
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”
you can also use just
StringFormat=d
in your datagrid column for date time showing
finally it will be
<sdk:DataGridTextColumn Binding="{Binding Path=DeliveryDate,StringFormat=d}" Header="Delivery date" Width="*" />
the out put will look like
In SL5 I found this to work:
<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#: try this
- yyyy(yy/yyy) - years
- MM - months(like '03'), MMMM - months(like 'March')
- dd - days(like 09), ddd/dddd - days(Sun/Sunday)
- hh - hour 12(AM/PM), HH - hour 24
- mm - minute
- ss - second
Use some delimeter,like this:
- MessageBox.Show(DateValue.ToString("yyyy-MM-dd")); example result: "2014-09-30"
- empty format string: MessageBox.Show(DateValue.ToString()); example result: "30.09.2014 0:00:00"
For me this worked:
<TextBlock Text="{Binding Date , StringFormat=g}" Width="130"/>
If want to show seconds also using G instead of g :
<TextBlock Text="{Binding Date , StringFormat=G}" Width="130"/>
Also if want for changing date type to another like Persian , using Language :
<TextBlock Text="{Binding Date , StringFormat=G}" Width="130" Language="fa-IR"/>
精彩评论