Some examples and tips on C# DateTime formatting using string.Format() or .ToString() methods.
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/3/2024
// Long date:
string.Format("{0:D}", date) // Tuesday, December 3, 2024
// Short time:
string.Format("{0:t}", date) // 1:25 PM
// Long time:
string.Format("{0:T}", date) // 1:25:34 PM
// Full date/time (short time):
string.Format("{0:f}", date) // Tuesday, December 3, 2024 1:25 PM
// Full date/time (long time):
string.Format("{0:F}", date) // Tuesday, December 3, 2024 1:25:34 PM
// General date/time (long time):
string.Format("{0:g}", date) // 12/3/2024 1:25 PM
// General date/time (long time):
string.Format("{0:G}", date) // 12/3/2024 1:25:34 PM
// Sortable date/time:
string.Format("{0:s}", date) // 2024-12-03T13:25:34
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/03/2024
string.Format("{0:MMMM dd, yyyy}", date)// December 03, 2024
string.Format("{0:MMM yyyy}", date) // Dec 2024
string.Format("{0:hh:mm tt}", date) // 01:25 PM
// Year patterns:
string.Format("{0:yy yyy yyyy}", date) // 24 2024 2024
// Month patterns:
string.Format("{0:MM MMM MMMM}", date) // 12 Dec December
// Day patterns:
string.Format("{0:dd ddd dddd}", date) // 03 Tue Tuesday
// Hour
string.Format("{0:hh HH tt}", date) // 01 13 PM
// Minute, second, second fraction
string.Format("{0:mm ss ffff}", date) // 25 34 1369
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) // Tuesday, 03 December 2024 13:25
date.ToString("d", invC) // 12/03/2024
date.ToString("t", invC) // 13:25
// German CultureInfo
CultureInfo deC = new CultureInfo("de-De");
date.ToString("f", deC) // Dienstag, 3. Dezember 2024 13:25
date.ToString("d", deC) // 03.12.2024
date.ToString("t", deC) // 13:25
// French CultureInfo
CultureInfo frC = new CultureInfo("fr-FR");
date.ToString("f", frC) // mardi 3 décembre 2024 13:25
date.ToString("d", frC) // 03/12/2024
date.ToString("t", frC) // 13:25
// Spanish CultureInfo
CultureInfo esC = new CultureInfo("es-ES");
date.ToString("f", esC) // martes, 3 de diciembre de 2024 13:25
date.ToString("d", esC) // 03/12/2024
date.ToString("t", esC) // 13:25
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: 2024 m: 12 d: 3
// Force time format to use ':' as separator ()
string.Format("{0:HH':'mm}", date) // 13:25
A simple tool for test your format string.