Thursday, August 18, 2016

DateTime Formatting in C#

The DateTime class is most useful for our time based programs. But most of the time we don’t know how to use the it with appropriate formats.


First of all there are different custom format specifiers for formatting datetime.

list goes like below :


  • 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 last not the list

  • z -> (time zone).

Standard DateTime Formatting


Let’s see some Standard DateTime Formatting. 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.


 




























































S.no.SpecifierDateTimeFormatInfo propertyPattern value (for en-US culture)
1tShortTimePatternh:mm tt
2dShortDatePatternM/d/yyyy
3TLongTimePatternh:mm:ss tt
4DLongDatePatterndddd, MMMM dd, yyyy
5f(combination of D and t)dddd, MMMM dd, yyyy h:mm tt
6FFullDateTimePatterndddd, MMMM dd, yyyy h:mm:ss tt
7g(combination of d and t)M/d/yyyy h:mm tt
8G(combination of d and T)M/d/yyyy h:mm:ss tt
9m, MMonthDayPatternMMMM dd
10y, YYearMonthPatternMMMM, yyyy
11r, RRFC1123Patternddd, dd MMM yyyy HH’:’mm’:’ss ‘GMT’ (*)
12sSortableDateTi­mePatternyyyy’-‘MM’-‘dd’T’HH’:’mm’:’ss (*)
13uUniversalSorta­bleDateTimePat­ternyyyy’-‘MM’-‘dd HH’:’mm’:’ss’Z’ (*)
(*) = culture independent

As now we are familiar with format specifiers lets we will see two different ways to format datetime


  1. Format by using DateTime.ToString()

  2. Format by using String.Format()

Format DateTime by using DateTime.ToString()




DateTime dt = DateTime.Now;
String strDate="";
strDate = dt.ToString("MM/dd/yyyy"); // 08/18/2016
strDate = dt.ToString("dddd, dd MMMM yyyy"); //Thursday, 18 August 2016
strDate = dt.ToString("dddd, dd MMMM yyyy HH:mm"); // Thursday, 18 August 2016 14:58
strDate = dt.ToString("dddd, dd MMMM yyyy hh:mm tt"); // Thursday, 18 August 2016 03:00 PM
strDate = dt.ToString("dddd, dd MMMM yyyy H:mm"); // Thursday, 18 August 2016 5:01
strDate = dt.ToString("dddd, dd MMMM yyyy h:mm tt"); // Thursday, 18 August 2016 3:03 PM
strDate = dt.ToString("dddd, dd MMMM yyyy HH:mm:ss"); // Thursday, 18 August 2016 15:04:10
strDate = dt.ToString("MM/dd/yyyy HH:mm"); // 08/18/2016 15:05
strDate = dt.ToString("MM/dd/yyyy hh:mm tt"); // 08/18/2016 03:06 PM
strDate = dt.ToString("MM/dd/yyyy H:mm"); // 08/18/2016 15:08
strDate = dt.ToString("MM/dd/yyyy h:mm tt"); // 08/18/2016 3:08 PM
strDate = dt.ToString("MM/dd/yyyy HH:mm:ss"); // 08/18/2016 15:09:29
strDate = dt.ToString("MMMM dd"); // August 18
strDate = dt.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK"); // 2016-08-18T15:11:19.1250000+05:30
strDate = dt.ToString("ddd, dd MMM yyyy HH':'mm':'ss 'GMT'"); // Sat, 18 Jul 2016 15:12:16 GMT
strDate = dt.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss"); // 2016-08-18T15:12:57
strDate = dt.ToString("HH:mm"); // 15:14
strDate = dt.ToString("hh:mm tt"); // 03:14 PM
strDate = dt.ToString("H:mm"); // 5:15
strDate = dt.ToString("h:mm tt"); // 3:16 PM
strDate = dt.ToString("HH:mm:ss"); // 15:16:29
strDate = dt.ToString("yyyy'-'MM'-'dd HH':'mm':'ss'Z'"); // 2016-08-18 15:17:20Z
strDate = dt.ToString("dddd, dd MMMM yyyy HH:mm:ss"); // Thursday, 18 August 2016 15:17:58
strDate = dt.ToString("yyyy MMMM"); // 2016 August


Format DateTime using String.Format()


// create date time 2008-03-09 16:05:07.123
var dt = new DateTime(2008, 3, 9, 16, 5, 7, 123);

String.Format("0:y yy yyy yyyy", dt); // "8 08 008 2008" year
String.Format("0:M MM MMM MMMM", dt); // "3 03 Mar March" month
String.Format("0:d dd ddd dddd", dt); // "9 09 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

// date separator in german culture is "." (so "/" changes to ".")
String.Format("0:d/M/yyyy HH:mm:ss", dt); // "9/3/2008 16:05:07" - english (en-US)
String.Format("0:d/M/yyyy HH:mm:ss", dt); // "9.3.2008 16:05:07" - german (de-DE)

// month/day numbers without/with leading zeroes
String.Format("0:M/d/yyyy", dt); // "3/9/2008"
String.Format("0:MM/dd/yyyy", dt); // "03/09/2008"

// day/month names
String.Format("0:ddd, MMM d, yyyy", dt); // "Sun, Mar 9, 2008"
String.Format("0:dddd, MMMM d, yyyy", dt); // "Sunday, March 9, 2008"

// two/four digit year
String.Format("0:MM/dd/yy", dt); // "03/09/08"
String.Format("0:MM/dd/yyyy", dt); // "03/09/2008"

String.Format("0:t", dt); // "4:05 PM" ShortTime
String.Format("0:d", dt); // "3/9/2008" ShortDate
String.Format("0:T", dt); // "4:05:07 PM" LongTime
String.Format("0:D", dt); // "Sunday, March 09, 2008" LongDate
String.Format("0:f", dt); // "Sunday, March 09, 2008 4:05 PM" LongDate+ShortTime
String.Format("0:F", dt); // "Sunday, March 09, 2008 4:05:07 PM" FullDateTime
String.Format("0:g", dt); // "3/9/2008 4:05 PM" ShortDate+ShortTime
String.Format("0:G", dt); // "3/9/2008 4:05:07 PM" ShortDate+LongTime
String.Format("0:m", dt); // "March 09" MonthDay
String.Format("0:y", dt); // "March, 2008" YearMonth
String.Format("0:r", dt); // "Sun, 09 Mar 2008 16:05:07 GMT" RFC1123
String.Format("0:s", dt); // "2008-03-09T16:05:07" SortableDateTime
String.Format("0:u", dt); // "2008-03-09 16:05:07Z" UniversalSortableDateTime

Let’s see some examples of standard format specifiers in String.Format method and the resulting output.



String.Format("0:t", dt); // "4:05 PM" ShortTime
String.Format("0:d", dt); // "3/9/2008" ShortDate
String.Format("0:T", dt); // "4:05:07 PM" LongTime
String.Format("0:D", dt); // "Sunday, March 09, 2008" LongDate
String.Format("0:f", dt); // "Sunday, March 09, 2008 4:05 PM" LongDate+ShortTime
String.Format("0:F", dt); // "Sunday, March 09, 2008 4:05:07 PM" FullDateTime
String.Format("0:g", dt); // "3/9/2008 4:05 PM" ShortDate+ShortTime
String.Format("0:G", dt); // "3/9/2008 4:05:07 PM" ShortDate+LongTime
String.Format("0:m", dt); // "March 09" MonthDay
String.Format("0:y", dt); // "March, 2008" YearMonth
String.Format("0:r", dt); // "Sun, 09 Mar 2008 16:05:07 GMT" RFC1123
String.Format("0:s", dt); // "2008-03-09T16:05:07" SortableDateTime
String.Format("0:u", dt); // "2008-03-09 16:05:07Z" UniversalSortableDateTime


DateTime Formatting in C#

No comments:

Post a Comment