[C#] Format DateTime as String Examples

Some examples and tips on C# DateTime formatting using string.Format() or .ToString() methods.

Standard DateTime format

Standard formats are typically used when you need a fast string representation of your DateTime object based on current culture.

DateTime date = DateTime.Now;
// Short date:
string.Format("{0:d}", date)   // 12/7/2019
// Long date:
string.Format("{0:D}", date)   // Saturday, December 7, 2019 
// Short time:
string.Format("{0:t}", date)   // 6:16 PM
// Long time:
string.Format("{0:T}", date)   // 6:16:17 PM
// Full date/time (short time):
string.Format("{0:f}", date)   // Saturday, December 7, 2019 6:16 PM
// Full date/time (long time):
string.Format("{0:F}", date)   // Saturday, December 7, 2019 6:16:17 PM
// General  date/time (long time):
string.Format("{0:g}", date)   // 12/7/2019 6:16 PM
// General  date/time (long time):
string.Format("{0:G}", date)   // 12/7/2019 6:16:17 PM
// Sortable date/time:
string.Format("{0:s}", date)   // 2019-12-07T18:16:17

Custom DateTime format

Custom formats are useful when you need more flexibility on the output string format.

DateTime date = DateTime.Now;
string.Format("{0:MM/dd/yyyy}", date)   // 12/07/2019
string.Format("{0:MMMM dd, yyyy}", date)// December 07, 2019
string.Format("{0:MMM yyyy}", date)     // Dec 2019
string.Format("{0:hh:mm tt}", date)     // 06:16 PM

// Year patterns:
string.Format("{0:yy yyy yyyy}", date)  // 19 2019 2019
// Month patterns:
string.Format("{0:MM MMM MMMM}", date)  // 12 Dec December
// Day patterns:
string.Format("{0:dd ddd dddd}", date)  // 07 Sat Saturday
// Hour
string.Format("{0:hh HH tt}", date)     // 06 18 PM
// Minute, second, second fraction 
string.Format("{0:mm ss ffff}", date)   // 16 17 9326

Format DateTime for a specific culture

When you format a DateTime with DateTime.ToString() you can also specify the culture to use.


using System.Globalization;
// ...
DateTime date = DateTime.Now;
// InvariantCulture 
CultureInfo invC = CultureInfo.InvariantCulture;
date.ToString("f", invC)        // Saturday, 07 December 2019 18:16 
date.ToString("d", invC)        // 12/07/2019 
date.ToString("t", invC)        // 18:16 
// German CultureInfo 
CultureInfo deC = new CultureInfo("de-De");
date.ToString("f", deC)        // Samstag, 7. Dezember 2019 18:16 
date.ToString("d", deC)        // 07.12.2019 
date.ToString("t", deC)        // 18:16 
// French CultureInfo 
CultureInfo frC = new CultureInfo("fr-FR");
date.ToString("f", frC)        // samedi 7 décembre 2019 18:16 
date.ToString("d", frC)        // 07/12/2019 
date.ToString("t", frC)        // 18:16 
// Spanish CultureInfo 
CultureInfo esC = new CultureInfo("es-ES");
date.ToString("f", esC)        // sábado, 7 de diciembre de 2019 18:16 
date.ToString("d", esC)        // 07/12/2019 
date.ToString("t", esC)        // 18:16 

    

Character escape and text

Any characters not used by the formatter is reported in the result string. If you need to enter text with reserved characters that must be inserted between two ' (single quote).

DateTime date = DateTime.Now;
// Escaped date text
string.Format("{0:'y:' yyyy' m:' M 'd:' d}", date)  // y: 2019 m: 12 d: 7 
// Force time format to use ':' as separator ()
string.Format("{0:HH':'mm}", date)                  // 18:16

TOOL: Test you format string

A simple tool for test your format string.

string.Format("
", DateTime.Now)