This documentation is archived and is not being maintained.

DateTime.ToString Method (IFormatProvider)

Updated: February 2010

Converts the value of the current DateTime object to its equivalent string representation using the specified culture-specific format information.

Namespace:  System
Assembly:  mscorlib (in mscorlib.dll)

public string ToString(
	IFormatProvider provider


Type: System.IFormatProvider

An object that supplies culture-specific formatting information.

Return Value

Type: System.String
A string representation of value of the current DateTime object as specified by provider.




The date and time is outside the range of dates supported by the calendar used by provider.

The value of the current DateTime object is formatted using the general date and time format specifier ("G"), which formats output using the short date pattern and the long time pattern.

The format of the short date and long time pattern is defined by the provider parameter. The provider parameter can be any of the following:

If provider is null, the DateTimeFormatInfo object associated with the current culture is used. For more information, see CultureInfo.CurrentCulture.

Notes to Callers:

The ToString(IFormatProvider) method returns the string representation of the date and time in the calendar used by the culture represented by the provider parameter. Its calendar is defined by the Calendar property. If the value of the current DateTime instance is earlier than Calendar.MinSupportedDateTime or later than Calendar.MaxSupportedDateTime, the method throws an ArgumentOutOfRangeException. The following example provides an illustration. It attempts to format a date that is outside the range of the JapaneseCalendar class.

using System;
using System.Globalization;

public class Example
   public static void Main()
      CultureInfo jaJP = new CultureInfo("ja-JP");
      jaJP.DateTimeFormat.Calendar = new JapaneseCalendar(); 
      DateTime date1 = new DateTime(1867, 1, 1);

      try {
      catch (ArgumentOutOfRangeException) {
         Console.WriteLine("{0:d} is earlier than {1:d} or later than {2:d}", 
// The example displays the following output: 
//    1/1/1867 is earlier than 9/8/1868 or later than 12/31/9999   }

The following example displays the string representation of a date and time using CultureInfo objects that represent five different cultures.

using System;
using System.Globalization;

public class Example
   public static void Main()
      CultureInfo[] cultures = new CultureInfo[] {CultureInfo.InvariantCulture, 
                                                  new CultureInfo("en-us"), 
                                                  new CultureInfo("fr-fr"), 
                                                  new CultureInfo("de-DE"), 
                                                  new CultureInfo("es-ES"),
                                                  new CultureInfo("ja-JP")};

      DateTime thisDate = new DateTime(2009, 5, 1, 9, 0, 0);                                            

      foreach (CultureInfo culture in cultures)
         string cultureName; 
         if (string.IsNullOrEmpty(culture.Name))
            cultureName = culture.NativeName;
            cultureName = culture.Name;

         Console.WriteLine("In {0}, {1}", 
                           cultureName, thisDate.ToString(culture));
// The example produces the following output: 
//    In Invariant Language (Invariant Country), 05/01/2009 09:00:00 
//    In en-US, 5/1/2009 9:00:00 AM 
//    In fr-FR, 01/05/2009 09:00:00 
//    In de-DE, 01.05.2009 09:00:00 
//    In es-ES, 01/05/2009 9:00:00 
//    In ja-JP, 2009/05/01 9:00:00

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC, Xbox 360, Zune

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 3.5, 2.0, 1.0

XNA Framework

Supported in: 3.0, 2.0, 1.0




February 2010

Added exception information and the Notes for Callers section.

Customer feedback.

July 2008

Added detail on method behavior; revised the example.

Information enhancement.