(C#) String Format for DateTime

String Format for DateTime(C#)

This example shows how to format DateTime using String.Format method. All formatting can be done also using DateTime.ToString method.

Custom DateTime Formatting

There are following custom format specifiers y (year), M (month), d (day), h (hour 12), H (hour 24), m (minute), s (second), f (second fraction), F (second fraction, trailing zeroes are trimmed), t (P.M or A.M) and z (time zone).
Following examples demonstrate how are the format specifiers rewritten to the output.

Code:
// create date time 2012-06-24 16:05:07.123
DateTime dt = new DateTime(2012, 6, 24, 16, 5, 7, 123);

String.Format("{0:y yy yyy yyyy}", dt);  // "2 12 012 2012"   year
String.Format("{0:M MM MMM MMMM}", dt);  // "6 06 Jun June"  Month
String.Format("{0:d dd ddd dddd}", dt);  // "24 24 Sun Sunday" day
String.Format("{0:h hh H HH}",     dt);  // "4 04 16 16"      hour 12/24
String.Format("{0:m mm}",          dt);  // "5 05"            minute
String.Format("{0:s ss}",          dt);  // "7 07"            second
String.Format("{0:f ff fff ffff}", dt);  // "1 12 123 1230"   sec.fraction
String.Format("{0:F FF FFF FFFF}", dt);  // "1 12 123 123"    without zeroes
String.Format("{0:t tt}",          dt);  // "P PM"            A.M. or P.M.
String.Format("{0:z zz zzz}",      dt);  // "-6 -06 -06:00"   Time zone

You can use also date separator / (slash) and time sepatator : (colon). These characters will be rewritten to characters defined in the current DateTimeForma­tInfo.DateSepa­rator and DateTimeForma­tInfo.TimeSepa­rator.

Code:
// date separator in german culture is "." (so "/" changes to ".")
String.Format("{0:d/M/yyyy HH:mm:ss}", dt); // "24/6/2012 16:05:07" - english (en-US)
String.Format("{0:d/M/yyyy HH:mm:ss}", dt); // "24.6.2012 16:05:07" - german (de-DE)

Here are some examples of custom date and time formatting:

Code:
// month/day numbers without/with leading zeroes
String.Format("{0:M/d/yyyy}", dt);            // "6/24/2012"
String.Format("{0:MM/dd/yyyy}", dt);          // "06/24/2012"

// day/month names
String.Format("{0:ddd, MMM d, yyyy}", dt);    // "Sun, Jun 24, 2012"
String.Format("{0:dddd, MMMM d, yyyy}", dt);  // "Sunday, June 24, 2012"

// two/four digit year
String.Format("{0:MM/dd/yy}", dt);            // "06/24/12"
String.Format("{0:MM/dd/yyyy}", dt);          // "06/24/2012"

Standard DateTime Formatting

In DateTimeForma­tInfo there are defined standard patterns for the current culture. For example property ShortTimePattern is string that contains value h:mm tt for en-US culture and value HH:mm for de-DE culture.
Following table shows patterns defined in DateTimeForma­tInfo and their values for en-US culture. First column contains format specifiers for the String.Format method.

Specifier DateTimeFormatInfo property Pattern value (for en-US culture)
t ShortTimePattern h:mm tt
d ShortDatePattern M/d/yyyy
T LongTimePattern h:mm:ss tt
D LongDatePattern dddd, MMMM dd, yyyy
f (combination of D and t) dddd, MMMM dd, yyyy h:mm tt
F FullDateTimePattern dddd, MMMM dd, yyyy h:mm:ss tt
g (combination of d and t) M/d/yyyy h:mm tt
G (combination of d and T) M/d/yyyy h:mm:ss tt
m, M MonthDayPattern MMMM dd
y, Y YearMonthPattern MMMM, yyyy
r, R RFC1123Pattern ddd, dd MMM yyyy HH':'mm':'ss 'GMT' (*)
s SortableDateTi­mePattern yyyy'-'MM'-'dd'T'HH':'mm':'ss (*)
u UniversalSorta­bleDateTimePat­tern yyyy'-'MM'-'dd HH':'mm':'ss'Z' (*)
(*) = culture independent

Following examples show usage of standard format specifiers in String.Format method and the resulting output.

Code:
String.Format("{0:t}", dt);  // "4:05 PM"                         ShortTime
String.Format("{0:d}", dt);  // "6/24/2012"                        ShortDate
String.Format("{0:T}", dt);  // "4:05:07 PM"                      LongTime
String.Format("{0:D}", dt);  // "Sunday, June 24, 2012"          LongDate
String.Format("{0:f}", dt);  // "Sunday, June 24, 2012 4:05 PM"  LongDate+ShortTime
String.Format("{0:F}", dt);  // "Sunday, June 24, 2012 4:05:07 PM" FullDateTime
String.Format("{0:g}", dt);  // "6/24/2012 4:05 PM"                ShortDate+ShortTime
String.Format("{0:G}", dt);  // "6/24/2012 4:05:07 PM"             ShortDate+LongTime
String.Format("{0:m}", dt);  // "June 24"                        MonthDay
String.Format("{0:y}", dt);  // "June, 2012"                     YearMonth
String.Format("{0:r}", dt);  // "Sun, 24 Jun 2012 16:05:07 GMT"   RFC1123
String.Format("{0:s}", dt);  // "2012-06-24T16:05:07"             SortableDateTime
String.Format("{0:u}", dt);  // "2012-06-24 16:05:07Z"            UniversalSortableDateTime

If you feel this is helpful or you like it, Please share this using share buttons available on page.

Comments

Popular posts from this blog

Auto Scroll in Common Controls

Convert typed library (.tlb) to .net assembly?

Disable close button on form - C#