C# Format Specifiers—DateTime Format Specifiers


Jump to: navigation, search
Visual C# Tutorials
Visual C# .NET Tutorials

C# Format Specifiers

© 2006 O'Reilly & Assoc., Inc.

DateTime Format Specifiers

Table B-3 lists the valid format specifiers supported by the Format method on the DateTime type (see System.IFormattable).

Table B-3. DateTime Format Specifiers

Specifier String Result
d MM/dd/yyyy
D dddd, MMMM dd, yyyy
f dddd, MMMM dd, yyyy HH:mm
F dddd, MMMM dd, yyyy HH:mm:ss
g MM/dd/yyyy HH:mm
G MM/dd/yyyy HH:mm:ss
m, M MMMM dd
r, R Ddd, dd MMM yyyy HH':'mm':'ss 'GMT'
s yyyy-MM-dd HH:mm:ss
S yyyy-MM-dd HH:mm:ss GMT
t HH:mm
T HH:mm:ss
u yyyy-MM-dd HH:mm:ss
U dddd, MMMM dd, yyyy HH:mm:ss
y, Y MMMM, yyyy


Here’s an example that uses these custom format specifiers on a DateTime value:

using System;
class TestDateTimeFormats {
  static void Main( ) {
    DateTime dt = new DateTime(2000, 10, 11, 15, 32, 14);
    // Prints "2000-10-11T15:32:14"
    Console.WriteLine(dt.ToString( ));
    // Prints "Wednesday, October 11, 2000"
    Console.WriteLine("{0}", dt);
    // Prints "10/11/2000"
    Console.WriteLine("{0:d}", dt);
    // Prints "Wednesday, October 11, 2000"
    Console.WriteLine("{0:D}", dt);
    // Prints "Wednesday, October 11, 2000 3:32 PM"
    Console.WriteLine("{0:f}", dt);
    // Prints "Wednesday, October 11, 2000 3:32:14 PM"
    Console.WriteLine("{0:F}", dt);
    // Prints "10/11/2000 3:32 PM"
    Console.WriteLine("{0:g}", dt);
    // Prints "10/11/2000 3:32:14 PM"
    Console.WriteLine("{0:G}", dt);
    // Prints "October 11"
    Console.WriteLine("{0:m}", dt);
    // Prints "October 11"
    Console.WriteLine("{0:M}", dt);
    // Prints "Wed, 11 Oct 2000 22:32:14 GMT"
    Console.WriteLine("{0:r}", dt);
    // Prints "Wed, 11 Oct 2000 22:32:14 GMT"
    Console.WriteLine("{0:R}", dt);
    // Prints "3:32 PM"
    Console.WriteLine("{0:t}", dt);
    // Prints "3:32:14 PM"
    Console.WriteLine("{0:T}", dt);
    // Prints "2000-10-11 22:32:14Z"
    Console.WriteLine("{0:u}", dt);
    // Prints "Wednesday, October 11, 2000 10:32:14 PM"
    Console.WriteLine("{0:U}", dt);
    // Prints "October, 2000"
    Console.WriteLine("{0:y}", dt);
    // Prints "October, 2000"
    Console.WriteLine("{0:Y}", dt);
    // Prints "Wednesday the 11 day of October in the year 2000"
    Console.WriteLine(
      "{0:dddd 'the' d 'day of' MMMM 'in the year' yyyy}", dt);
  }
}

Windows and .NET incompatability

There are some things to consider when using these default formatters in an international environment.

Console.WriteLine("{0:t}", dt);   // Prints "3:32:14 PM"
Console.WriteLine("{0:T}", dt);   // Prints "2000-10-11 22:32:14Z" 

The difference between {0:t} and {0:T} has to be taken into account. This difference is due to the fact that .NET has two date time representations—Long ( T ) and Short ( t )—while Windows uses only the Long notation.

So, if a user changes the Regional Settings in Windows only the Long notation will follow this change in .NET. This means that the programmer has to perform his own formatting—and not use the default formatters—if he wants to follow the users settings—not something a programmer should expect.

For more information, read short time format in .NET


Previous_Page_.gif Next_Page_.gif

Share this page
  • del.icio.us
  • Facebook
  • Google+
  • StumbleUpon