Export (0) Print
Expand All

Convert.ToDateTime Method (Object, IFormatProvider)

Converts the value of the specified object to a DateTime object, using the specified culture-specific formatting information.

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

public static DateTime ToDateTime(
	Object value,
	IFormatProvider provider
)

Parameters

value
Type: System.Object

An object that implements the IConvertible interface.

provider
Type: System.IFormatProvider

An object that supplies culture-specific formatting information.

Return Value

Type: System.DateTime
The date and time equivalent of the value of value, or the date and time equivalent of DateTime.MinValue if value is null.

ExceptionCondition
FormatException

value is not a valid date and time value.

InvalidCastException

value does not implement the IConvertible interface.

-or-

The conversion is not supported.

The return value is the result of invoking the IConvertible.ToDateTime method of the underlying type of value.

provider enables the user to specify culture-specific conversion information about the contents of value. For example, if value is a String that represents a date, provider could supply culture-specific information about the notation used to represent that date. provider is involved in the conversion of value if the runtime type of value is a String, or if value is a user-defined type whose IConvertible.ToDateTime implementation makes use of provider. If the runtime type of value is String and provider is null, the CultureInfo object that represents the current thread culture is used.

The following example defines a custom format provider, CustomProvider, whose GetFormat method outputs a message to the console that it has been invoked, and then returns the DateTimeFormatInfo object of the culture whose name was passed as a parameter to its class constructor. Each of these CustomProvider objects is used to convert the elements in an object array to date and time values. The output indicates that the CustomProvider object is used in the conversion only when the type of the value parameter is a String.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string[] cultureNames = { "en-US", "hu-HU", "pt-PT" };
      object[] objects = { 12, 17.2, false, new DateTime(2010, 1, 1), "today", 
                           new System.Collections.ArrayList(), 'c', 
                           "05/10/2009 6:13:18 PM", "September 8, 1899" };

      foreach (string cultureName in cultureNames)
      {
         Console.WriteLine("{0} culture:", cultureName);
         CustomProvider provider = new CustomProvider(cultureName);
         foreach (object obj in objects)
         {            
            try {
               DateTime dateValue = Convert.ToDateTime(obj, provider);      
               Console.WriteLine("{0} --> {1}", obj, 
                                 dateValue.ToString(new CultureInfo(cultureName)));
            }
            catch (FormatException) {
               Console.WriteLine("{0} --> Bad Format", obj);
            }   
            catch (InvalidCastException) {
               Console.WriteLine("{0} --> Conversion Not Supported", obj);
            }
         }
         Console.WriteLine();
      }
   }
}

public class CustomProvider : IFormatProvider
{
   private string cultureName;

   public CustomProvider(string cultureName)
   {
      this.cultureName = cultureName;
   }

   public object GetFormat(Type formatType)
   {
      if (formatType == typeof(DateTimeFormatInfo))
      {
         Console.Write("(CustomProvider retrieved.) ");
         return new CultureInfo(cultureName).GetFormat(formatType);
      }
      else
      {
         return null;
      }   
   }
}
// The example displays the following output: 
//    en-US culture: 
//    12 --> Conversion Not Supported 
//    17.2 --> Conversion Not Supported 
//    False --> Conversion Not Supported 
//    1/1/2010 12:00:00 AM --> 1/1/2010 12:00:00 AM 
//    (CustomProvider retrieved.) today --> Bad Format 
//    System.Collections.ArrayList --> Conversion Not Supported 
//    c --> Conversion Not Supported 
//    (CustomProvider retrieved.) 05/10/2009 6:13:18 PM --> 5/10/2009 6:13:18 PM 
//    (CustomProvider retrieved.) September 8, 1899 --> 9/8/1899 12:00:00 AM 
//     
//    hu-HU culture: 
//    12 --> Conversion Not Supported 
//    17.2 --> Conversion Not Supported 
//    False --> Conversion Not Supported 
//    1/1/2010 12:00:00 AM --> 2010. 01. 01. 0:00:00 
//    (CustomProvider retrieved.) today --> Bad Format 
//    System.Collections.ArrayList --> Conversion Not Supported 
//    c --> Conversion Not Supported 
//    (CustomProvider retrieved.) 05/10/2009 6:13:18 PM --> 2009. 05. 10. 18:13:18 
//    (CustomProvider retrieved.) September 8, 1899 --> 1899. 09. 08. 0:00:00 
//     
//    pt-PT culture: 
//    12 --> Conversion Not Supported 
//    17.2 --> Conversion Not Supported 
//    False --> Conversion Not Supported 
//    1/1/2010 12:00:00 AM --> 01-01-2010 0:00:00 
//    (CustomProvider retrieved.) today --> Bad Format 
//    System.Collections.ArrayList --> Conversion Not Supported 
//    c --> Conversion Not Supported 
//    (CustomProvider retrieved.) 05/10/2009 6:13:18 PM --> 05-10-2009 18:13:18 
//    (CustomProvider retrieved.) September 8, 1899 --> 08-09-1899 0:00:00

.NET Framework

Supported in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Portable Class Library

Supported in: Portable Class Library

.NET for Windows Store apps

Supported in: Windows 8

.NET for Windows Phone apps

Supported in: Windows Phone 8.1, Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

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

Show:
© 2014 Microsoft