<?xml version="1.0" encoding="UTF-8"?><item><title>String formatting in C#</title><description>&lt;p&gt;&lt;/p&gt;&#13;
&lt;p&gt;I couldn't find a quick reference to .NET string formatting using the String.Format() function, so I created this one.&lt;/p&gt;&#13;
&lt;p&gt;When I started working with the .NET framework, one thing puzzled me. I couldn't find sprintf(). sprintf() is the C function that takes an output buffer, a format string, and any number of arguments, and builds a string for  you. For example:&lt;/p&gt;&#13;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;&#13;
&lt;p&gt;&lt;font face="Courier" size="2"&gt;char szError[256];&lt;br /&gt;sprintf(szError, "Error %d occurred.\n", nError);&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;&#13;
&lt;p&gt;This would write "Error 12 occurred." into the szError buffer (assuming nError was 12). It's a basic part of C programming and most C++ programmers still use it though better functionality is available in the STL because sprintf is simple to use and clear. The STL equivalent would be:&lt;/p&gt;&#13;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;&#13;
&lt;p&gt;&lt;font face="Courier New" size="2"&gt;str &amp;lt;&amp;lt; "Error " &amp;lt;&amp;lt; nError &amp;lt;&amp;lt; " occurred." &amp;lt;&amp;lt; endl;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;&#13;
&lt;p&gt;Or something close to that. It's type-safe, and more OO than sprintf, but not as easy to read and not as easy to localize. &lt;/p&gt;&#13;
&lt;p&gt;The .NET framework handles strings very nicely - but it takes some getting used to. The rough equivalent of sprintf in .NET is the static String.Format function, which takes a format string and some arguments, and generates an output string. (This is a nice improvement over sprintf since there's no chance you'll overflow the output buffer). For example:&lt;/p&gt;&#13;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;&#13;
&lt;p&gt;&lt;font face="Courier New" size="2"&gt;string errorString = String.Format("Error {0} occurred.", nError);&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt;&#13;
&lt;p&gt;Teeming with metadata, the .NET environment doesn't need the format string to say what type of data you're formatting, just where you want it. (A common sprintf bug is supplying the wrong data type - there's no protection from using %s instead of %d and having your program crash when sprintf is called).&lt;/p&gt;&#13;
&lt;p&gt;The {0} in the string above is replaced with the value of nError, but what if you want to specify the number of digits to use? Or the base (hexadecimal etc)? The framework supports all this, but where it seemed confusing is that it's not the String.Format function that does the string formatting, but rather the types themselves.&lt;/p&gt;&#13;
&lt;p&gt;Every object has a method called ToString that returns a string representation of the object. The ToString method can accept a string parameter, which tells the object how to format itself - in the String.Format call, the formatting  string is passed after the position, for example, "{0:##}"&lt;/p&gt;&#13;
&lt;p&gt;The text inside the curly braces is &lt;b&gt;{&lt;i&gt;index&lt;/i&gt;[,&lt;i&gt;alignment&lt;/i&gt;][:&lt;i&gt;formatString&lt;/i&gt;]}&lt;/b&gt;.  If alignment is positive, the text is right-aligned in a field the given number of spaces; if it's negative, it's left-aligned.&lt;/p&gt;&#13;
&lt;h3&gt;&lt;font face="Verdana"&gt;Strings&lt;/font&gt;&lt;/h3&gt;&#13;
&lt;p&gt;&lt;font size="2"&gt;&lt;font size="3"&gt;There really isn't any formatting within a strong, beyond it's alignment.  Alignment works for any argument being printed in a String.Format call.&lt;/font&gt; &lt;/font&gt;&lt;/p&gt;&#13;
&lt;p&gt;&lt;/p&gt;&#13;
&lt;table&gt;&#13;
&lt;tbody&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle" bgcolor="#c0c0c0"&gt;&lt;b&gt;&lt;font size="2"&gt;Sample&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;&#13;
&lt;td align="middle" bgcolor="#c0c0c0"&gt;&lt;b&gt;&lt;font size="2"&gt;Generates&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font face="Courier New" size="2"&gt;String.Format("-&amp;gt;{1,10}&amp;lt;-", "Hello");&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font face="Courier New" size="2"&gt;-&amp;gt;     Hello&amp;lt;-&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font face="Courier New" size="2"&gt; String.Format("-&amp;gt;{1,-10}&amp;lt;-", "Hello");&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font face="Courier New" size="2"&gt;-&amp;gt;Hello     &amp;lt;-&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&#13;
&lt;h3&gt;&lt;font face="Verdana"&gt;Numbers&lt;/font&gt;&lt;/h3&gt;&#13;
&lt;p&gt;Basic number formatting specifiers:&lt;/p&gt;&#13;
&lt;p&gt;&lt;/p&gt;&#13;
&lt;table&gt;&#13;
&lt;tbody&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle" bgcolor="#c0c0c0"&gt;&lt;b&gt;&lt;font size="2"&gt;Specifier&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;&#13;
&lt;td align="middle" bgcolor="#c0c0c0"&gt;&lt;b&gt;&lt;font size="2"&gt;Type&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;&#13;
&lt;td align="middle" bgcolor="#c0c0c0"&gt;&lt;b&gt;&lt;font size="2"&gt;Format  &lt;/font&gt;&lt;/b&gt;&lt;/td&gt;&#13;
&lt;td align="middle" bgcolor="#c0c0c0"&gt;&lt;b&gt;&lt;font size="2"&gt;Output (Passed Double 1.42)&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;&#13;
&lt;td align="middle" bgcolor="#c0c0c0"&gt;&lt;b&gt;&lt;font size="2"&gt;Output (Passed Int -12400)&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;c&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Currency&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font face="Courier New" size="2"&gt;{0:c}&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;$1.42&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;-$12,400&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;d&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Decimal (Whole number)&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font face="Courier New" size="2"&gt;{0:d}&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;b&gt;&lt;font size="2"&gt;System.FormatException&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;-12400&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;e&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Scientific&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font face="Courier New" size="2"&gt;{0:e}&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;1.420000e+000&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;-1.240000e+004&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;f&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Fixed point&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font face="Courier New" size="2"&gt;{0:f}&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;1.42&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;-12400.00&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;g&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;General&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font face="Courier New" size="2"&gt;{0:g}&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;1.42&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;-12400&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;n&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Number with commas for thousands&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font face="Courier New" size="2"&gt;{0:n}&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;1.42&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;-12,400&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;r&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Round trippable&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font face="Courier New" size="2"&gt;{0:r}&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;1.42&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;b&gt;&lt;font size="2"&gt;System.FormatException&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;x&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Hexadecimal&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font face="Courier New" size="2"&gt;{0:x4}&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;b&gt;&lt;font size="2"&gt;System.FormatException&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;cf90&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&#13;
&lt;p&gt;Custom number formatting:&lt;/p&gt;&#13;
&lt;p&gt;&lt;/p&gt;&#13;
&lt;table&gt;&#13;
&lt;tbody&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle" bgcolor="#c0c0c0"&gt;&lt;b&gt;&lt;font size="2"&gt;Specifier&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;&#13;
&lt;td align="middle" bgcolor="#c0c0c0"&gt;&lt;b&gt;&lt;font size="2"&gt;Type&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;&#13;
&lt;td align="middle" bgcolor="#c0c0c0"&gt;&lt;b&gt;&lt;font size="2"&gt;Example   &lt;/font&gt;&lt;/b&gt;&lt;/td&gt;&#13;
&lt;td align="middle" bgcolor="#c0c0c0"&gt;&lt;b&gt;&lt;font size="2"&gt;Output (Passed Double 1500.42)&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;&#13;
&lt;td align="middle" bgcolor="#c0c0c0"&gt;&lt;b&gt;&lt;font size="2"&gt;Note&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;0&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Zero placeholder&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td align="middle"&gt;&lt;font face="Courier New" size="2"&gt;{0:00.0000}&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;1500.4200&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Pads with zeroes.&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;#&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Digit placeholder&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td align="middle"&gt;&lt;font face="Courier New" size="2"&gt;{0:(#).##}&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;(1500).42&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;.&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Decimal point&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td align="middle"&gt;&lt;font face="Courier New" size="2"&gt;{0:0.0}&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;1500.4&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;,&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Thousand separator&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td align="middle"&gt;&lt;font face="Courier New" size="2"&gt;{0:0,0}&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;1,500&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Must be between two zeroes.&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;,.&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Number scaling&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;{0:0,.}&lt;/font&gt; &lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;2&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Comma adjacent to Period scales by 1000.&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;%&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Percent&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td align="middle"&gt;&lt;font face="Courier New" size="2"&gt;{0:0%}&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;150042%&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Multiplies by 100, adds % sign.&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;e&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Exponent placeholder&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td align="middle"&gt;&lt;font face="Courier New" size="2"&gt;{0:00e+0}&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;15e+2&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Many exponent formats available.&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;;&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Group separator&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;see below&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&#13;
&lt;p&gt;The group separator is especially useful for formatting currency values which require that negative values be enclosed in parentheses.  This currency formatting example at the bottom of this document makes it obvious:&lt;/p&gt;&#13;
&lt;h3&gt;&lt;font face="Verdana"&gt;Dates&lt;/font&gt;&lt;/h3&gt;&#13;
&lt;p&gt;Note that date formatting is especially dependant on the system's regional settings; the example strings here are from my local locale.&lt;/p&gt;&#13;
&lt;p&gt;&lt;/p&gt;&#13;
&lt;table&gt;&#13;
&lt;tbody&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle" bgcolor="#c0c0c0"&gt;&lt;b&gt;&lt;font size="2"&gt;Specifier&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;&#13;
&lt;td align="middle" bgcolor="#c0c0c0"&gt;&lt;b&gt;&lt;font size="2"&gt;Type&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;&#13;
&lt;td align="middle" bgcolor="#c0c0c0"&gt;&lt;b&gt;&lt;font size="2"&gt;Example (Passed System.DateTime.Now)&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;d&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Short date&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;10/12/2002&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;D&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Long date&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;December 10, 2002&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;t&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Short time&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;10:11 PM&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;T&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Long time&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;10:11:29 PM&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;f&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Full date &amp;amp; time &lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;December 10, 2002 10:11 PM&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;F&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Full date &amp;amp; time (long)&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;December 10, 2002 10:11:29 PM&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;g&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Default date &amp;amp; time&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;10/12/2002 10:11 PM&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;G&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Default date &amp;amp; time (long)&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;10/12/2002 10:11:29 PM&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;M&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Month day pattern&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;December 10&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;r&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;RFC1123 date string&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Tue, 10 Dec 2002 22:11:29 GMT&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;s&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Sortable date string&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;2002-12-10T22:11:29&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;u&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Universal sortable, local time&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;2002-12-10 22:13:50Z&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;U&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Universal sortable, GMT&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;December 11, 2002 3:13:50 AM&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;Y&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Year month pattern&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;December, 2002&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&#13;
&lt;p&gt;The 'U' specifier seems broken; that string certainly isn't sortable.&lt;/p&gt;&#13;
&lt;p&gt;&lt;b&gt;Custom date formatting:&lt;/b&gt;&lt;/p&gt;&#13;
&lt;p&gt;&lt;/p&gt;&#13;
&lt;table&gt;&#13;
&lt;tbody&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle" bgcolor="#c0c0c0"&gt;&lt;b&gt;&lt;font size="2"&gt;Specifier&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;&#13;
&lt;td align="middle" bgcolor="#c0c0c0"&gt;&lt;b&gt;&lt;font size="2"&gt;Type&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;&#13;
&lt;td align="middle" bgcolor="#c0c0c0"&gt;&lt;b&gt;&lt;font size="2"&gt;Example   &lt;/font&gt;&lt;/b&gt;&lt;/td&gt;&#13;
&lt;td align="middle" bgcolor="#c0c0c0"&gt;&lt;b&gt;&lt;font size="2"&gt;Example Output&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;dd&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Day&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td align="middle"&gt;&lt;font face="Courier New" size="2"&gt;{0:dd}&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;10&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;ddd&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Day name&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td align="middle"&gt;&lt;font face="Courier New" size="2"&gt;{0:ddd}&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Tue&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;dddd&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Full day name&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td align="middle"&gt;&lt;font face="Courier New" size="2"&gt;{0:dddd}&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Tuesday&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;f, ff, ...&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Second fractions&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td align="middle"&gt;&lt;font face="Courier New" size="2"&gt;{0:fff}&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;932&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;gg, ...&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Era&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td align="middle"&gt;&lt;font face="Courier New" size="2"&gt;{0:gg}&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;A.D.&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;hh&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;2 digit hour&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td align="middle"&gt;&lt;font face="Courier New" size="2"&gt;{0:hh}&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;10&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;HH&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;2 digit hour, 24hr format&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td align="middle"&gt;&lt;font face="Courier New" size="2"&gt;{0:HH}&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;22&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;mm&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Minute 00-59&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td align="middle"&gt;&lt;font face="Courier New" size="2"&gt;{0:mm}&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;38&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;MM&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Month 01-12&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td align="middle"&gt;&lt;font face="Courier New" size="2"&gt;{0:MM}&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;12&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;MMM&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Month abbreviation&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td align="middle"&gt;&lt;font face="Courier New" size="2"&gt;{0:MMM}&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Dec&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;MMMM&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Full month name&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td align="middle"&gt;&lt;font face="Courier New" size="2"&gt;{0:MMMM}&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;December&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;ss&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Seconds 00-59&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td align="middle"&gt;&lt;font face="Courier New" size="2"&gt;{0:ss}&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;46&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;tt&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;AM or PM&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td align="middle"&gt;&lt;font face="Courier New" size="2"&gt;{0:tt}&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;PM&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;yy&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Year, 2 digits&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td align="middle"&gt;&lt;font face="Courier New" size="2"&gt;{0:yy}&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;02&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;yyyy&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Year&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td align="middle"&gt;&lt;font face="Courier New" size="2"&gt;{0:yyyy}&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;2002&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;zz&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Timezone offset, 2 digits&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td align="middle"&gt;&lt;font face="Courier New" size="2"&gt;{0:zz}&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;-05&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;zzz&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Full timezone offset&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td align="middle"&gt;&lt;font face="Courier New" size="2"&gt;{0:zzz}&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;-05:00&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;:&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Separator&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td align="middle"&gt;&lt;font face="Courier New" size="2"&gt;{0:hh:mm:ss}&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;10:43:20&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;/&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Separator&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td align="middle"&gt;&lt;font face="Courier New" size="2"&gt;{0:dd/MM/yyyy}&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;10/12/2002&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&#13;
&lt;h3&gt;&lt;font face="Verdana"&gt;Enumerations&lt;/font&gt;&lt;/h3&gt;&#13;
&lt;p&gt;&lt;/p&gt;&#13;
&lt;table&gt;&#13;
&lt;tbody&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle" bgcolor="#c0c0c0"&gt;&lt;b&gt;&lt;font size="2"&gt;Specifier&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;&#13;
&lt;td align="middle" bgcolor="#c0c0c0"&gt;&lt;b&gt;&lt;font size="2"&gt;Type&lt;/font&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;g&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Default (Flag names if available, otherwise decimal)&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;f&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Flags always&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;d&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Integer always&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&#13;
&lt;tr&gt;&#13;
&lt;td align="middle"&gt;&lt;font size="2"&gt;x&lt;/font&gt;&lt;/td&gt;&#13;
&lt;td&gt;&lt;font size="2"&gt;Eight digit hex.&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&#13;
&lt;h3&gt;&lt;font face="Verdana"&gt;Some Useful Examples&lt;/font&gt;&lt;/h3&gt;&#13;
&lt;p&gt;&lt;font face="Courier New" size="2"&gt;String.Format("{0:$#,##0.00;($#,##0.00);Zero}", value);&lt;/font&gt;&lt;/p&gt;&#13;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;&#13;
&lt;p&gt;This will output "$1,240.00" if passed 1243.50.  It will output the same format but in parentheses if the number is negative, and will output the string "Zero" if the number is zero.&lt;/p&gt;&lt;/blockquote&gt;&#13;
&lt;p&gt;&lt;font face="Courier New" size="2"&gt;String.Format("{0:(###) ###-####}", 18005551212);&lt;/font&gt;&lt;/p&gt;&#13;
&lt;blockquote dir="ltr" style="MARGIN-RIGHT: 0px"&gt;&#13;
&lt;p&gt;This will output "(800) 555-1212".&lt;/p&gt;&lt;/blockquote&gt;&#13;
&lt;p&gt;If you have any questions about string formatting, or pretty much anything related, drop by the &lt;a href=http://www.stevex.org/forums/Default.aspx?g=topics&amp;f=31&gt;Forum&lt;/a&gt; and ask it there.  It's an easier place to talk than in the comments section here.&lt;/p&gt;&#13;
</description><pubDate>Thu, 01 Sep 2005 19:17:04 GMT</pubDate></item>