DateTime.ParseExact DateTime.ParseExact DateTime.ParseExact DateTime.ParseExact Method

Definición

Convierte la representación de cadena especificada de una fecha y hora en el objeto DateTime equivalente.Converts the specified string representation of a date and time to its DateTime equivalent. El formato de la representación de cadena debe coincidir exactamente con el formato especificado; de lo contrario, se produce una excepción.The format of the string representation must match a specified format exactly or an exception is thrown.

Sobrecargas

ParseExact(String, String, IFormatProvider) ParseExact(String, String, IFormatProvider) ParseExact(String, String, IFormatProvider) ParseExact(String, String, IFormatProvider)

Convierte la representación de cadena especificada de una fecha y hora en el objeto DateTime equivalente, usando la información de formato específica de la referencia cultural y el formato que se hayan especificado.Converts the specified string representation of a date and time to its DateTime equivalent using the specified format and culture-specific format information. El formato de la representación de cadena debe coincidir exactamente con el formato especificado.The format of the string representation must match the specified format exactly.

ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles)
ParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles) ParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles) ParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles)
ParseExact(String, String, IFormatProvider, DateTimeStyles) ParseExact(String, String, IFormatProvider, DateTimeStyles) ParseExact(String, String, IFormatProvider, DateTimeStyles) ParseExact(String, String, IFormatProvider, DateTimeStyles)

Convierte la representación de cadena especificada de una fecha y hora en el objeto DateTime equivalente, usando el formato, la información de formato específica de la referencia cultural y el estilo especificados.Converts the specified string representation of a date and time to its DateTime equivalent using the specified format, culture-specific format information, and style. El formato de la representación de cadena debe coincidir exactamente con el formato especificado; de lo contrario, se produce una excepción.The format of the string representation must match the specified format exactly or an exception is thrown.

ParseExact(String, String[], IFormatProvider, DateTimeStyles) ParseExact(String, String[], IFormatProvider, DateTimeStyles) ParseExact(String, String[], IFormatProvider, DateTimeStyles) ParseExact(String, String[], IFormatProvider, DateTimeStyles)

Convierte la representación de cadena especificada de una fecha y hora en el objeto DateTime equivalente, usando la matriz de formatos, la información de formato específica de la referencia cultural y el estilo especificados.Converts the specified string representation of a date and time to its DateTime equivalent using the specified array of formats, culture-specific format information, and style. El formato de la representación de cadena debe coincidir exactamente con, al menos, uno de los formatos especificados; de lo contrario se produce una excepción.The format of the string representation must match at least one of the specified formats exactly or an exception is thrown.

Comentarios

Importante

Las eras en los calendarios japoneses se basan en el reino del emperador y, por tanto, se espera que cambien.Eras in the Japanese calendars are based on the emperor's reign and are therefore expected to change. Por ejemplo, el 1 de mayo de 2019 marcaba el comienzo de la era Reiwa en JapaneseCalendar y JapaneseLunisolarCalendar.For example, May 1, 2019 marked the beginning of the Reiwa era in the JapaneseCalendar and JapaneseLunisolarCalendar. Este cambio de era afecta a todas las aplicaciones que usan estos calendarios.Such a change of era affects all applications that use these calendars. Para obtener más información y determinar si sus aplicaciones están entre las afectadas, consulte Handling a new era in the Japanese calendar in .NET (Gestión de una nueva era del calendario japonés en .NET).See Handling a new era in the Japanese calendar in .NET for more information and to determine whether your applications are affected. Para obtener más información sobre cómo probar aplicaciones en sistemas Windows para garantizar que estén preparadas para el cambio de era, consulte Prepare your application for the Japanese era change (Preparación de la aplicación para el cambio de era japonesa).See Prepare your application for the Japanese era change for information on testing your applications on Windows systems to ensure their readiness for the era change. Consulte Trabajar con eras para ver las características de .NET que admiten calendarios con varias eras y procedimientos recomendados al trabajar con calendarios que admiten varias eras.See Working with eras for features in .NET that support calendars with multiple eras and for best practices when working with calendars that support multiple eras.

ParseExact(String, String, IFormatProvider) ParseExact(String, String, IFormatProvider) ParseExact(String, String, IFormatProvider) ParseExact(String, String, IFormatProvider)

Convierte la representación de cadena especificada de una fecha y hora en el objeto DateTime equivalente, usando la información de formato específica de la referencia cultural y el formato que se hayan especificado.Converts the specified string representation of a date and time to its DateTime equivalent using the specified format and culture-specific format information. El formato de la representación de cadena debe coincidir exactamente con el formato especificado.The format of the string representation must match the specified format exactly.

public:
 static DateTime ParseExact(System::String ^ s, System::String ^ format, IFormatProvider ^ provider);
public static DateTime ParseExact (string s, string format, IFormatProvider provider);
static member ParseExact : string * string * IFormatProvider -> DateTime
Public Shared Function ParseExact (s As String, format As String, provider As IFormatProvider) As DateTime

Parámetros

s
String String String String

Cadena que contiene una fecha y hora que se van a convertir.A string that contains a date and time to convert.

format
String String String String

Especificador de formato que define el formato requerido de s.A format specifier that defines the required format of s. Para obtener más información, vea la sección Comentarios.For more information, see the Remarks section.

provider
IFormatProvider IFormatProvider IFormatProvider IFormatProvider

Objeto que proporciona información de formato específica de la referencia cultural acerca de s.An object that supplies culture-specific format information about s.

Devoluciones

Objeto equivalente a la fecha y hora contenidas en s, tal como especifican format y provider.An object that is equivalent to the date and time contained in s, as specified by format and provider.

Excepciones

s o format es una cadena vacía.s or format is an empty string.

o bien-or- s no contiene una fecha y hora que se correspondan con el patrón especificado en format.s does not contain a date and time that corresponds to the pattern specified in format.

O bien-or- El componente de hora y el designador AM/PM en s no coinciden.The hour component and the AM/PM designator in s do not agree.

Ejemplos

En el siguiente ejemplo se ParseExact muestra el método.The following example demonstrates the ParseExact method.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string dateString, format;  
      DateTime result;
      CultureInfo provider = CultureInfo.InvariantCulture;

      // Parse date-only value with invariant culture.
      dateString = "06/15/2008";
      format = "d";
      try {
         result = DateTime.ParseExact(dateString, format, provider);
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
      }
      catch (FormatException) {
         Console.WriteLine("{0} is not in the correct format.", dateString);
      } 

      // Parse date-only value without leading zero in month using "d" format.
      // Should throw a FormatException because standard short date pattern of 
      // invariant culture requires two-digit month.
      dateString = "6/15/2008";
      try {
         result = DateTime.ParseExact(dateString, format, provider);
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
      }
      catch (FormatException) {
         Console.WriteLine("{0} is not in the correct format.", dateString);
      }
      
      // Parse date and time with custom specifier.
      dateString = "Sun 15 Jun 2008 8:30 AM -06:00";
      format = "ddd dd MMM yyyy h:mm tt zzz";
      try {
         result = DateTime.ParseExact(dateString, format, provider);
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
      }
      catch (FormatException) {
         Console.WriteLine("{0} is not in the correct format.", dateString);
      }
      
      // Parse date and time with offset but without offset's minutes.
      // Should throw a FormatException because "zzz" specifier requires leading  
      // zero in hours.
      dateString = "Sun 15 Jun 2008 8:30 AM -06";
      try {
         result = DateTime.ParseExact(dateString, format, provider);
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
      }   
      catch (FormatException) {
         Console.WriteLine("{0} is not in the correct format.", dateString);
      } 
      
      dateString = "15/06/2008 08:30";
      format = "g";
      provider = new CultureInfo("fr-FR");
      try {
         result = DateTime.ParseExact(dateString, format, provider);
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
      }   
      catch (FormatException) {
         Console.WriteLine("{0} is not in the correct format.", dateString);
      } 

      // Parse a date that includes seconds and milliseconds
      // by using the French (France) and invariant cultures.
      dateString = "18/08/2015 06:30:15.006542";
      format = "dd/MM/yyyy HH:mm:ss.ffffff";
      try {
         result = DateTime.ParseExact(dateString, format, provider);
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
      }
      catch (FormatException) {
         Console.WriteLine("{0} is not in the correct format.", dateString);
      }
   }
}
// The example displays the following output:
//       06/15/2008 converts to 6/15/2008 12:00:00 AM.
//       6/15/2008 is not in the correct format.
//       Sun 15 Jun 2008 8:30 AM -06:00 converts to 6/15/2008 7:30:00 AM.
//       Sun 15 Jun 2008 8:30 AM -06 is not in the correct format.
//       15/06/2008 08:30 converts to 6/15/2008 8:30:00 AM.
//       18/08/2015 06:30:15.006542 converts to 8/18/2015 6:30:15 AM.
Imports System.Globalization

Module Example
   Public Sub Main()
      Dim dateString, format As String  
      Dim result As Date
      Dim provider As CultureInfo = CultureInfo.InvariantCulture

      ' Parse date-only value with invariant culture.
      dateString = "06/15/2008"
      format = "d"
      Try
         result = Date.ParseExact(dateString, format, provider)
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString())
      Catch e As FormatException
         Console.WriteLine("{0} is not in the correct format.", dateString)
      End Try 

      ' Parse date-only value without leading zero in month using "d" format.
      ' Should throw a FormatException because standard short date pattern of 
      ' invariant culture requires two-digit month.
      dateString = "6/15/2008"
      Try
         result = Date.ParseExact(dateString, format, provider)
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString())
      Catch e As FormatException
         Console.WriteLine("{0} is not in the correct format.", dateString)
      End Try 
      
      ' Parse date and time with custom specifier.
      dateString = "Sun 15 Jun 2008 8:30 AM -06:00"
      format = "ddd dd MMM yyyy h:mm tt zzz"        
      Try
         result = Date.ParseExact(dateString, format, provider)
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString())
      Catch e As FormatException
         Console.WriteLine("{0} is not in the correct format.", dateString)
      End Try 
      
      ' Parse date and time with offset but without offset's minutes.
      ' Should throw a FormatException because "zzz" specifier requires leading  
      ' zero in hours.
      dateString = "Sun 15 Jun 2008 8:30 AM -06"
      Try
         result = Date.ParseExact(dateString, format, provider)
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString())
      Catch e As FormatException
         Console.WriteLine("{0} is not in the correct format.", dateString)
      End Try 
      
      ' Parse a date string using the French (France) culture.
      dateString = "15/06/2008 08:30"
      format = "g"
      provider = New CultureInfo("fr-FR")
      Try
         result = Date.ParseExact(dateString, format, provider)
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString())
      Catch e As FormatException
         Console.WriteLine("{0} is not in the correct format.", dateString)
      End Try

      ' Parse a date that includes seconds and milliseconds
      ' by using the French (France) and invariant cultures.
      dateString = "18/08/2015 06:30:15.006542"
      format = "dd/MM/yyyy HH:mm:ss.ffffff"
      Try
         result = Date.ParseExact(dateString, format, provider)
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString())
      Catch e As FormatException
         Console.WriteLine("{0} is not in the correct format.", dateString)
      End Try
   End Sub
End Module
' The example displays the following output:
'       06/15/2008 converts to 6/15/2008 12:00:00 AM.
'       6/15/2008 is not in the correct format.
'       Sun 15 Jun 2008 8:30 AM -06:00 converts to 6/15/2008 7:30:00 AM.
'       Sun 15 Jun 2008 8:30 AM -06 is not in the correct format.
'       15/06/2008 08:30 converts to 6/15/2008 8:30:00 AM.
'       18/08/2015 06:30:15.006542 converts to 8/18/2015 6:30:15 AM.

Comentarios

El DateTime.ParseExact(String, String, IFormatProvider) método analiza la representación de cadena de una fecha, que debe estar en el formato definido por el format parámetro.The DateTime.ParseExact(String, String, IFormatProvider) method parses the string representation of a date, which must be in the format defined by the format parameter. También <requiere que los elementos > de fecha y <hora > de la representación de cadena de una fecha y hora aparezcan en el orden formatespecificado por y s que no tengan ningún espacio en blanco distinto del permitido por format.It also requires that the <Date> and <Time> elements of the string representation of a date and time appear in the order specified by format, and that s have no white space other than that permitted by format. Si format define una fecha sin ningún elemento de hora y la operación de análisis se realiza correctamente DateTime , el valor resultante tiene una hora de medianoche (00:00:00).If format defines a date with no time element and the parse operation succeeds, the resulting DateTime value has a time of midnight (00:00:00). Si format define una hora sin ningún elemento de fecha y la operación de análisis se realiza correctamente DateTime , el valor resultante tiene DateTime.Now.Dateuna fecha de.If format defines a time with no date element and the parse operation succeeds, the resulting DateTime value has a date of DateTime.Now.Date.

Si s no representa una hora en una zona horaria determinada y la operación de análisis se realiza correctamente, Kind la propiedad del valor DateTime devuelto DateTimeKind.Unspecifiedes.If s does not represent a time in a particular time zone and the parse operation succeeds, the Kind property of the returned DateTime value is DateTimeKind.Unspecified. Si s representa la hora en una zona horaria determinada y format permite que esté presente información de zona horaria (por ejemplo, si format es igual a los especificadores de formato estándar "o", "r" u "u", o si contiene "z", "ZZ" o "Zzz" especificadores de formato personalizado), Kind la propiedad del valor DateTime devuelto DateTimeKind.Locales.If s does represent the time in a particular time zone and format allows time zone information to be present (for example, if format is equal to the "o", "r", or "u" standard format specifiers, or if it contains the "z", "zz", or "zzz" custom format specifiers), the Kind property of the returned DateTime value is DateTimeKind.Local.

El format parámetro es una cadena que contiene un único especificador de formato estándar o uno o varios especificadores de formato personalizado que definen el formato requerido de s.The format parameter is a string that contains either a single standard format specifier, or one or more custom format specifiers that define the required format of s. Para obtener más información sobre los códigos de formato válidos, vea cadenas con formato de fecha y hora estándar o cadenas con formato de fecha y hora personalizado.For details about valid formatting codes, see Standard Date and Time Format Strings or Custom Date and Time Format Strings.

Nota

Si format es un modelo de formato personalizado que no incluye separadores de fecha y hora (por ejemplo, "aaaaMMddhhmm"), use la referencia cultural provider de todos los idiomas para el parámetro y la forma más amplia de cada especificador de formato personalizado.If format is a custom format pattern that does not include date or time separators (such as "yyyyMMddHHmm"), use the invariant culture for the provider parameter and the widest form of each custom format specifier. Por ejemplo, si desea especificar las horas en el patrón de formato, especifique la forma más ancha, "HH", en lugar de la forma más estrecha "H".For example, if you want to specify hours in the format pattern, specify the wider form, "HH", instead of the narrower form, "H".

Los símbolos y cadenas de fecha y hora concretos (como los nombres de los días de la semana en un idioma determinado) que s se usan en se provider definen mediante el parámetro, como es el s formato format preciso de si es un formato estándar. cadena de especificador.The particular date and time symbols and strings (such as names of the days of the week in a particular language) used in s are defined by the provider parameter, as is the precise format of s if format is a standard format specifier string. El provider parámetro puede ser cualquiera de los siguientes:The provider parameter can be any of the following:

Si provider CultureInfo es null, se utiliza el objeto que se corresponde con la referencia cultural actual.If provider is null, the CultureInfo object that corresponds to the current culture is used.

Notas a los autores de las llamadas

En, el ParseExact método produce una FormatException excepción si la cadena que se va a analizar contiene un componente de hora y un designador AM/PM que no están en el acuerdo. .NET Framework 4.NET Framework 4In the .NET Framework 4.NET Framework 4, the ParseExact method throws a FormatException if the string to be parsed contains an hour component and an AM/PM designator that are not in agreement. .NET Framework 3,5.NET Framework 3.5 En y versiones anteriores, se omite el designador AM/PM.In the .NET Framework 3,5.NET Framework 3.5 and earlier versions, the AM/PM designator is ignored.

Consulte también:

ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles)

public static DateTime ParseExact (ReadOnlySpan<char> s, ReadOnlySpan<char> format, IFormatProvider provider, System.Globalization.DateTimeStyles style = System.Globalization.DateTimeStyles.None);
static member ParseExact : ReadOnlySpan<char> * ReadOnlySpan<char> * IFormatProvider * System.Globalization.DateTimeStyles -> DateTime
Public Shared Function ParseExact (s As ReadOnlySpan(Of Char), format As ReadOnlySpan(Of Char), provider As IFormatProvider, Optional style As DateTimeStyles = System.Globalization.DateTimeStyles.None) As DateTime

Parámetros

format
ReadOnlySpan<Char>

Devoluciones

ParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles) ParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles) ParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles)

public static DateTime ParseExact (ReadOnlySpan<char> s, string[] formats, IFormatProvider provider, System.Globalization.DateTimeStyles style = System.Globalization.DateTimeStyles.None);
static member ParseExact : ReadOnlySpan<char> * string[] * IFormatProvider * System.Globalization.DateTimeStyles -> DateTime
Public Shared Function ParseExact (s As ReadOnlySpan(Of Char), formats As String(), provider As IFormatProvider, Optional style As DateTimeStyles = System.Globalization.DateTimeStyles.None) As DateTime

Parámetros

formats
String[]

Devoluciones

ParseExact(String, String, IFormatProvider, DateTimeStyles) ParseExact(String, String, IFormatProvider, DateTimeStyles) ParseExact(String, String, IFormatProvider, DateTimeStyles) ParseExact(String, String, IFormatProvider, DateTimeStyles)

Convierte la representación de cadena especificada de una fecha y hora en el objeto DateTime equivalente, usando el formato, la información de formato específica de la referencia cultural y el estilo especificados.Converts the specified string representation of a date and time to its DateTime equivalent using the specified format, culture-specific format information, and style. El formato de la representación de cadena debe coincidir exactamente con el formato especificado; de lo contrario, se produce una excepción.The format of the string representation must match the specified format exactly or an exception is thrown.

public:
 static DateTime ParseExact(System::String ^ s, System::String ^ format, IFormatProvider ^ provider, System::Globalization::DateTimeStyles style);
public static DateTime ParseExact (string s, string format, IFormatProvider provider, System.Globalization.DateTimeStyles style);
static member ParseExact : string * string * IFormatProvider * System.Globalization.DateTimeStyles -> DateTime
Public Shared Function ParseExact (s As String, format As String, provider As IFormatProvider, style As DateTimeStyles) As DateTime

Parámetros

s
String String String String

Cadena que contiene una fecha y hora que se van a convertir.A string containing a date and time to convert.

format
String String String String

Especificador de formato que define el formato requerido de s.A format specifier that defines the required format of s. Para obtener más información, vea la sección Comentarios.For more information, see the Remarks section.

provider
IFormatProvider IFormatProvider IFormatProvider IFormatProvider

Objeto que proporciona información de formato específica de la referencia cultural acerca de s.An object that supplies culture-specific formatting information about s.

style
DateTimeStyles DateTimeStyles DateTimeStyles DateTimeStyles

Combinación bit a bit de los valores de enumeración que proporciona información adicional sobre s, los elementos de estilo que pueden estar presentes en s o sobre la conversión de s en un valor de DateTime.A bitwise combination of the enumeration values that provides additional information about s, about style elements that may be present in s, or about the conversion from s to a DateTime value. Un valor que se especifica de forma habitual es None.A typical value to specify is None.

Devoluciones

Objeto equivalente a la fecha y hora contenidas en s, tal y como especifican format, provider y style.An object that is equivalent to the date and time contained in s, as specified by format, provider, and style.

Excepciones

s o format es una cadena vacía.s or format is an empty string.

o bien-or- s no contiene una fecha y hora que se correspondan con el patrón especificado en format.s does not contain a date and time that corresponds to the pattern specified in format.

O bien-or- El componente de hora y el designador AM/PM en s no coinciden.The hour component and the AM/PM designator in s do not agree.

style contiene una combinación no válida de valores DateTimeStyles.style contains an invalid combination of DateTimeStyles values. Por ejemplo, AssumeLocal y AssumeUniversal.For example, both AssumeLocal and AssumeUniversal.

Ejemplos

En el siguiente ejemplo se ParseExact(String, String, IFormatProvider) muestra el método.The following example demonstrates the ParseExact(String, String, IFormatProvider) method. Tenga en cuenta que la cadena "5/01/2009 8:30 AM" no se puede analizar correctamente styles cuando el parámetro DateTimeStyles.None es igual a formatporque no permite espacios iniciales.Note that the string " 5/01/2009 8:30 AM" cannot be parsed successfully when the styles parameter equals DateTimeStyles.None because leading spaces are not allowed by format. Además, la cadena "5/01/2009 09:00" no se puede analizar correctamente con un format valor de "mm/dd/yyyyhh: mm" porque la cadena de fecha no precede al número de mes con un cero format inicial, como requiere.Additionally, the string "5/01/2009 09:00" cannot be parsed successfully with a format of "MM/dd/yyyyhh:mm" because the date string does not precede the month number with a leading zero, as format requires.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      CultureInfo enUS = new CultureInfo("en-US"); 
      string dateString;
      DateTime dateValue;
      
      // Parse date with no style flags.
      dateString = " 5/01/2009 8:30 AM";
      try {
         dateValue = DateTime.ParseExact(dateString, "g", enUS, DateTimeStyles.None);
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, 
                           dateValue.Kind);
      }                           
      catch (FormatException) {
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
      }
      // Allow a leading space in the date string.
      try {
         dateValue = DateTime.ParseExact(dateString, "g", enUS, DateTimeStyles.AllowLeadingWhite);
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, 
                           dateValue.Kind);
      }                           
      catch (FormatException) {
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
      }
      
      // Use custom formats with M and MM.
      dateString = "5/01/2009 09:00";
      try {
         dateValue = DateTime.ParseExact(dateString, "M/dd/yyyy hh:mm", enUS, DateTimeStyles.None);
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, 
                           dateValue.Kind);
      }                           
      catch (FormatException) {
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
      }
      // Allow a leading space in the date string.
      try {
         dateValue = DateTime.ParseExact(dateString, "MM/dd/yyyy hh:mm", enUS, DateTimeStyles.None);
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, 
                           dateValue.Kind);
      }                           
      catch (FormatException) {
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
      }

      // Parse a string with time zone information.
      dateString = "05/01/2009 01:30:42 PM -05:00"; 
      try {
         dateValue = DateTime.ParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, DateTimeStyles.None);
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, 
                           dateValue.Kind);
      }                           
      catch (FormatException) {
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
      }
      // Allow a leading space in the date string.
      try {
         dateValue = DateTime.ParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, 
                                     DateTimeStyles.AdjustToUniversal);
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, 
                           dateValue.Kind);
      }                           
      catch (FormatException) {
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
      }
           
      // Parse a string representing UTC.
      dateString = "2008-06-11T16:11:20.0904778Z";
      try {
         dateValue = DateTime.ParseExact(dateString, "o", CultureInfo.InvariantCulture, 
                                     DateTimeStyles.None);
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, 
                           dateValue.Kind);
      }                           
      catch (FormatException) {
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
      }
      try {
         dateValue = DateTime.ParseExact(dateString, "o", CultureInfo.InvariantCulture, 
                                     DateTimeStyles.RoundtripKind);
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, 
                           dateValue.Kind);
      }                           
      catch (FormatException) {
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
      }
   }
}
// The example displays the following output:
//    ' 5/01/2009 8:30 AM' is not in an acceptable format.
//    Converted ' 5/01/2009 8:30 AM' to 5/1/2009 8:30:00 AM (Unspecified).
//    Converted '5/01/2009 09:00' to 5/1/2009 9:00:00 AM (Unspecified).
//    '5/01/2009 09:00' is not in an acceptable format.
//    Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 11:30:42 AM (Local).
//    Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 6:30:42 PM (Utc).
//    Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 9:11:20 AM (Local).
//    Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 4:11:20 PM (Utc).
Imports System.Globalization

Module Example
   Public Sub Main()
      Dim enUS As New CultureInfo("en-US") 
      Dim dateString As String
      Dim dateValue As Date
      
      ' Parse date with no style flags.
      dateString = " 5/01/2009 8:30 AM"
      Try
         dateValue = Date.ParseExact(dateString, "g", enUS, DateTimeStyles.None)
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Catch e As FormatException
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End Try
      ' Allow a leading space in the date string.
      Try
         dateValue = Date.ParseExact(dateString, "g", enUS, DateTimeStyles.AllowLeadingWhite)
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Catch e As FormatException
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End Try
      
      ' Use custom formats with M and MM.
      dateString = "5/01/2009 09:00"
      Try
         dateValue = Date.ParseExact(dateString, "M/dd/yyyy hh:mm", enUS, DateTimeStyles.None)
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Catch e As FormatException
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End Try
      ' Allow a leading space in the date string.
      Try
         dateValue = Date.ParseExact(dateString, "MM/dd/yyyy hh:mm", enUS, DateTimeStyles.None)
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Catch e As FormatException
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End Try

      ' Parse a string with time zone information.
      dateString = "05/01/2009 01:30:42 PM -05:00" 
      Try
         dateValue = Date.ParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, DateTimeStyles.None)
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Catch e As FormatException
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End Try
      ' Allow a leading space in the date string.
      Try
         dateValue = Date.ParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, _
                                     DateTimeStyles.AdjustToUniversal)
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Catch e As FormatException
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End Try
           
      ' Parse a string representing UTC.
      dateString = "2008-06-11T16:11:20.0904778Z"
      Try
         dateValue = Date.ParseExact(dateString, "o", CultureInfo.InvariantCulture, _
                                     DateTimeStyles.None)
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Catch e As FormatException
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End Try
      Try
         dateValue = Date.ParseExact(dateString, "o", CultureInfo.InvariantCulture, _
                                     DateTimeStyles.RoundtripKind)
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Catch e As FormatException
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End Try
   End Sub
End Module
' The example displays the following output:
'    ' 5/01/2009 8:30 AM' is not in an acceptable format.
'    Converted ' 5/01/2009 8:30 AM' to 5/1/2009 8:30:00 AM (Unspecified).
'    Converted '5/01/2009 09:00' to 5/1/2009 9:00:00 AM (Unspecified).
'    '5/01/2009 09:00' is not in an acceptable format.
'    Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 11:30:42 AM (Local).
'    Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 6:30:42 PM (Utc).
'    Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 9:11:20 AM (Local).
'    Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 4:11:20 PM (Utc).

Comentarios

El DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles) método analiza la representación de cadena de una fecha, que debe estar en un formato definido por el format parámetro.The DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles) method parses the string representation of a date, which must be in a format defined by the format parameter. También requiere que los elementos de fecha y hora de s aparezcan en el orden especificado formatpor.It also requires that the date and time elements in s appear in the order specified by format. Si s no coincide con el patrón format del parámetro, con las variaciones definidas por el style parámetro, el método produce una FormatExceptionexcepción.If s does not match the pattern of the format parameter, with any variations defined by the style parameter, the method throws a FormatException. En cambio, el DateTime.Parse(String, IFormatProvider, DateTimeStyles) método analiza la representación de cadena de una fecha en cualquiera de los formatos reconocidos por el objeto del proveedor de DateTimeFormatInfo formato.In contrast, the DateTime.Parse(String, IFormatProvider, DateTimeStyles) method parses the string representation of a date in any one of the formats recognized by the format provider's DateTimeFormatInfo object. El DateTime.Parse(String, IFormatProvider, DateTimeStyles) método también permite que los elementos de fecha y s hora de aparezcan en cualquier orden.The DateTime.Parse(String, IFormatProvider, DateTimeStyles) method also allows the date and time elements in s to appear in any order.

Si el s parámetro contiene solo una hora y ninguna fecha, se usa la fecha actual a menos style que el parámetro DateTimeStyles.NoCurrentDateDefault incluya la marca, en cuyo caso se utilizaDateTime.Date.MinValuela fecha predeterminada ().If the s parameter contains only a time and no date, the current date is used unless the style parameter includes the DateTimeStyles.NoCurrentDateDefault flag, in which case the default date (DateTime.Date.MinValue) is used. Si el s parámetro contiene solo una fecha y sin hora, se usa la medianoche (00:00:00).If the s parameter contains only a date and no time, midnight (00:00:00) is used. El style parámetro también determina si el s parámetro puede contener caracteres de espacio en blanco iniciales, internos o finales.The style parameter also determines whether the s parameter can contain leading, inner, or trailing white space characters.

Si s no contiene información de zona horaria, Kind la propiedad del objeto DateTime devuelto DateTimeKind.Unspecifiedes.If s contains no time zone information, the Kind property of the returned DateTime object is DateTimeKind.Unspecified. Este comportamiento se puede DateTimeStyles.AssumeLocal cambiar mediante la marca, que devuelve un DateTime valor cuya Kind propiedad es DateTimeKind.Local, o mediante las DateTimeStyles.AssumeUniversal marcas y DateTimeStyles.AdjustToUniversal , que devuelve un DateTime valor cuyo la propiedad DateTimeKind.Utces. KindThis behavior can be changed by using the DateTimeStyles.AssumeLocal flag, which returns a DateTime value whose Kind property is DateTimeKind.Local, or by using the DateTimeStyles.AssumeUniversal and DateTimeStyles.AdjustToUniversal flags, which returns a DateTime value whose Kind property is DateTimeKind.Utc. Si s contiene información de zona horaria, la hora se convierte en la hora local, si es necesario Kind , y la propiedad DateTime del objeto devuelto DateTimeKind.Localse establece en.If s contains time zone information, the time is converted to local time, if necessary, and the Kind property of the returned DateTime object is set to DateTimeKind.Local. Este comportamiento se puede cambiar mediante el uso DateTimeStyles.RoundtripKind de la marca para no convertir la hora universal coordinada (UTC) a una hora local Kind y establecer DateTimeKind.Utcla propiedad en.This behavior can be changed by using the DateTimeStyles.RoundtripKind flag to not convert Coordinated Universal Time (UTC) to a local time and to set the Kind property to DateTimeKind.Utc.

El format parámetro define el patrón necesario s del parámetro.The format parameter defines the required pattern of the s parameter. Puede constar de uno o varios especificadores de formato personalizado de la tabla cadenas con formato de fecha y hora personalizado , o un único especificador de formato estándar, que identifica un patrón predefinido, de la tabla cadenas con formato de fecha y hora estándar .It can consist of either one or more custom format specifiers from the Custom Date and Time Format Strings table, or a single standard format specifier, which identifies a predefined pattern, from the Standard Date and Time Format Strings table.

Si no usa separadores de fecha y hora en un modelo de formato personalizado, use la referencia cultural de todos provider los idiomas para el parámetro y la forma más amplia de cada especificador de formato personalizado.If you do not use date or time separators in a custom format pattern, use the invariant culture for the provider parameter and the widest form of each custom format specifier. Por ejemplo, si desea especificar las horas en el patrón, especifique la forma más ancha, "HH", en lugar de la forma más estrecha, "H".For example, if you want to specify hours in the pattern, specify the wider form, "HH", instead of the narrower form, "H".

Nota

En lugar de requerir que s se ajuste a un único formato para que la operación de análisis se realice correctamente, DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) puede llamar al método y especificar varios formatos permitidos.Rather than requiring that s conform to a single format for the parse operation to succeed, you can call the DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) method and specify multiple permitted formats. Esto hace que sea más probable que la operación de análisis se realice correctamente.This makes the parse operation more likely to succeed.

El styles parámetro incluye uno o más miembros de la DateTimeStyles enumeración que determinan si los espacios en blanco format no definidos por s pueden aparecer en y que controlan el comportamiento preciso de la operación de análisis.The styles parameter includes one or more members of the DateTimeStyles enumeration that determine whether and where white space not defined by format can appear in s and that control the precise behavior of the parse operation. En la tabla siguiente se describe cómo cada miembro DateTimeStyles de la enumeración afecta a ParseExact(String, String, IFormatProvider, DateTimeStyles) la operación del método.The following table describes how each member of the DateTimeStyles enumeration affects the operation of the ParseExact(String, String, IFormatProvider, DateTimeStyles) method.

DateTimeStyles (miembro)DateTimeStyles member DescripciónDescription
AdjustToUniversal s Analiza y, si es necesario, lo convierte en UTC.Parses s and, if necessary, converts it to UTC. Si s incluye un ajuste de zona horaria o si s no contiene información de zona horaria styles pero incluye DateTimeStyles.AssumeLocal la marca, el método analiza la cadena, llama ToUniversalTime a para convertir el DateTime valor devuelto a UTC. y establece la Kind propiedad en DateTimeKind.Utc.If s includes a time zone offset, or if s contains no time zone information but styles includes the DateTimeStyles.AssumeLocal flag, the method parses the string, calls ToUniversalTime to convert the returned DateTime value to UTC, and sets the Kind property to DateTimeKind.Utc. Si s indica que representa la hora UTC, o s si no contiene información de zona horaria styles pero incluye DateTimeStyles.AssumeUniversal la marca, el método analiza la cadena, no realiza ninguna conversión de zona horaria en DateTime el valor devuelto. y establece la Kind propiedad en DateTimeKind.Utc.If s indicates that it represents UTC, or if s does not contain time zone information but styles includes the DateTimeStyles.AssumeUniversal flag, the method parses the string, performs no time zone conversion on the returned DateTime value, and sets the Kind property to DateTimeKind.Utc. En todos los demás casos, la marca no tiene ningún efecto.In all other cases, the flag has no effect.
AllowInnerWhite Especifica que los espacios en blanco no format definidos por pueden aparecer entre cualquier elemento de fecha u hora individual.Specifies that white space not defined by format can appear between any individual date or time element.
AllowLeadingWhite Especifica que el espacio en blanco no format definido por puede aparecer al principio sde.Specifies that white space not defined by format can appear at the beginning of s.
AllowTrailingWhite Especifica que el espacio en blanco no format definido por puede aparecer al final sde.Specifies that white space not defined by format can appear at the end of s.
AllowWhiteSpaces Especifica que s puede contener espacios en blanco iniciales, internos y finales no definidos por format.Specifies that s may contain leading, inner, and trailing white spaces not defined by format.
AssumeLocal Especifica que si s falta información de zona horaria, se supone que representa una hora local.Specifies that if s lacks any time zone information, it is assumed to represent a local time. A menos DateTimeStyles.AdjustToUniversal que la marca esté presente Kind , la propiedad del DateTime valor devuelto se DateTimeKind.Localestablece en.Unless the DateTimeStyles.AdjustToUniversal flag is present, the Kind property of the returned DateTime value is set to DateTimeKind.Local.
AssumeUniversal Especifica que si s falta información de zona horaria, se supone que representa la hora UTC.Specifies that if s lacks any time zone information, it is assumed to represent UTC. A menos DateTimeStyles.AdjustToUniversal que la marca esté presente, el método convierte el DateTime valor devuelto de UTC a hora local y Kind establece su DateTimeKind.Localpropiedad en.Unless the DateTimeStyles.AdjustToUniversal flag is present, the method converts the returned DateTime value from UTC to local time and sets its Kind property to DateTimeKind.Local.
NoCurrentDateDefault Si s contiene la información de hora sin fecha, la fecha del valor devuelto se DateTime.MinValue.Dateestablece en.If s contains time without date information, the date of the return value is set to DateTime.MinValue.Date.
None El s parámetro se analiza con los valores predeterminados.The s parameter is parsed using default values. No se permite ningún espacio en blanco que format no sea el presente en.No white space other than that present in format is allowed. Si s falta un componente de fecha, la fecha del valor devuelto DateTime se establece en 1/1/0001.If s lacks a date component, the date of the returned DateTime value is set to 1/1/0001. Si s no contiene información de zona horaria, Kind la propiedad del objeto DateTime devuelto se establece DateTimeKind.Unspecifieden.If s contains no time zone information, the Kind property of the returned DateTime object is set to DateTimeKind.Unspecified. Si hay información de zona horaria en s, la hora se convierte en la hora local y Kind la propiedad del objeto DateTime devuelto se establece DateTimeKind.Localen.If time zone information is present in s, the time is converted to local time and the Kind property of the returned DateTime object is set to DateTimeKind.Local.
RoundtripKind En el caso de las cadenas que contienen información de zona horaria, intenta evitar DateTime la conversión en una fecha y Kind hora de valor DateTimeKind.Localcon su propiedad establecida en.For strings that contain time zone information, tries to prevent the conversion to a DateTime value date and time with its Kind property set to DateTimeKind.Local. Esta marca evita principalmente la conversión de horas UTC en horas locales.This flag primarily prevents the conversion of UTC times to local times.

Los símbolos y cadenas de fecha y hora concretos (como los nombres de los días de la semana en un idioma determinado) que se s usan en se definen provider mediante el parámetro, como es el formato s preciso format de si es un formato estándar. cadena de especificador.The particular date and time symbols and strings (such as the names of the days of the week in a particular language) used in s are defined by the provider parameter, as is the precise format of s if format is a standard format specifier string. El provider parámetro puede ser cualquiera de los siguientes:The provider parameter can be any of the following:

Si provider CultureInfo es null, se utiliza el objeto que se corresponde con la referencia cultural actual.If provider is null, the CultureInfo object that corresponds to the current culture is used.

Notas a los autores de las llamadas

En, el ParseExact método produce una FormatException excepción si la cadena que se va a analizar contiene un componente de hora y un designador AM/PM que no están en el acuerdo. .NET Framework 4.NET Framework 4In the .NET Framework 4.NET Framework 4, the ParseExact method throws a FormatException if the string to be parsed contains an hour component and an AM/PM designator that are not in agreement. .NET Framework 3,5.NET Framework 3.5 En y versiones anteriores, se omite el designador AM/PM.In the .NET Framework 3,5.NET Framework 3.5 and earlier versions, the AM/PM designator is ignored.

Consulte también:

ParseExact(String, String[], IFormatProvider, DateTimeStyles) ParseExact(String, String[], IFormatProvider, DateTimeStyles) ParseExact(String, String[], IFormatProvider, DateTimeStyles) ParseExact(String, String[], IFormatProvider, DateTimeStyles)

Convierte la representación de cadena especificada de una fecha y hora en el objeto DateTime equivalente, usando la matriz de formatos, la información de formato específica de la referencia cultural y el estilo especificados.Converts the specified string representation of a date and time to its DateTime equivalent using the specified array of formats, culture-specific format information, and style. El formato de la representación de cadena debe coincidir exactamente con, al menos, uno de los formatos especificados; de lo contrario se produce una excepción.The format of the string representation must match at least one of the specified formats exactly or an exception is thrown.

public:
 static DateTime ParseExact(System::String ^ s, cli::array <System::String ^> ^ formats, IFormatProvider ^ provider, System::Globalization::DateTimeStyles style);
public static DateTime ParseExact (string s, string[] formats, IFormatProvider provider, System.Globalization.DateTimeStyles style);
static member ParseExact : string * string[] * IFormatProvider * System.Globalization.DateTimeStyles -> DateTime
Public Shared Function ParseExact (s As String, formats As String(), provider As IFormatProvider, style As DateTimeStyles) As DateTime

Parámetros

s
String String String String

Cadena que contiene una fecha y hora que se van a convertir.A string that contains a date and time to convert.

formats
String[]

Matriz de formatos permitidos de s.An array of allowable formats of s. Para obtener más información, vea la sección Comentarios.For more information, see the Remarks section.

provider
IFormatProvider IFormatProvider IFormatProvider IFormatProvider

Objeto que proporciona información de formato específica de la referencia cultural acerca de s.An object that supplies culture-specific format information about s.

style
DateTimeStyles DateTimeStyles DateTimeStyles DateTimeStyles

Combinación bit a bit de valores de enumeración que indica el formato permitido de s.A bitwise combination of enumeration values that indicates the permitted format of s. Un valor que se especifica de forma habitual es None.A typical value to specify is None.

Devoluciones

Objeto equivalente a la fecha y hora contenidas en s, tal y como especifican formats, provider y style.An object that is equivalent to the date and time contained in s, as specified by formats, provider, and style.

Excepciones

s es una cadena vacía.s is an empty string.

O bien-or- un elemento de formats es una cadena vacía.an element of formats is an empty string.

o bien-or- s no contiene una fecha y hora que se correspondan con ningún elemento de formats.s does not contain a date and time that corresponds to any element of formats.

O bien-or- El componente de hora y el designador AM/PM en s no coinciden.The hour component and the AM/PM designator in s do not agree.

style contiene una combinación no válida de valores DateTimeStyles.style contains an invalid combination of DateTimeStyles values. Por ejemplo, AssumeLocal y AssumeUniversal.For example, both AssumeLocal and AssumeUniversal.

Ejemplos

En el ejemplo siguiente se DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) usa el método para asegurarse de que una cadena en varios formatos posibles se puede analizar correctamente.The following example uses the DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) method to ensure that a string in a number of possible formats can be successfully parsed .

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string[] formats= {"M/d/yyyy h:mm:ss tt", "M/d/yyyy h:mm tt", 
                         "MM/dd/yyyy hh:mm:ss", "M/d/yyyy h:mm:ss", 
                         "M/d/yyyy hh:mm tt", "M/d/yyyy hh tt", 
                         "M/d/yyyy h:mm", "M/d/yyyy h:mm", 
                         "MM/dd/yyyy hh:mm", "M/dd/yyyy hh:mm",
                         "MM/d/yyyy HH:mm:ss.ffffff" };
      string[] dateStrings = {"5/1/2009 6:32 PM", "05/01/2009 6:32:05 PM", 
                              "5/1/2009 6:32:00", "05/01/2009 06:32", 
                              "05/01/2009 06:32:00 PM", "05/01/2009 06:32:00",
                              "08/28/2015 16:17:39.125", "08/28/2015 16:17:39.125000" };
      DateTime dateValue;
      
      foreach (string dateString in dateStrings)
      {
         try {
            dateValue = DateTime.ParseExact(dateString, formats, 
                                            new CultureInfo("en-US"), 
                                            DateTimeStyles.None);
            Console.WriteLine("Converted '{0}' to {1}.", dateString, dateValue);
         }
         catch (FormatException) {
            Console.WriteLine("Unable to convert '{0}' to a date.", dateString);
         }                                               
      }
   }
}
// The example displays the following output:
//       Converted '5/1/2009 6:32 PM' to 5/1/2009 6:32:00 PM.
//       Converted '05/01/2009 6:32:05 PM' to 5/1/2009 6:32:05 PM.
//       Converted '5/1/2009 6:32:00' to 5/1/2009 6:32:00 AM.
//       Converted '05/01/2009 06:32' to 5/1/2009 6:32:00 AM.
//       Converted '05/01/2009 06:32:00 PM' to 5/1/2009 6:32:00 PM.
//       Converted '05/01/2009 06:32:00' to 5/1/2009 6:32:00 AM.
//       Unable to convert '08/28/2015 16:17:39.125' to a date.
//       Converted '08/28/2015 16:17:39.125000' to 8/28/2015 4:17:39 PM.
Imports System.Globalization

Module Example
   Public Sub Main()
      Dim formats() As String = {"M/d/yyyy h:mm:ss tt", "M/d/yyyy h:mm tt", _
                                 "MM/dd/yyyy hh:mm:ss", "M/d/yyyy h:mm:ss", _
                                 "M/d/yyyy hh:mm tt", "M/d/yyyy hh tt", _
                                 "M/d/yyyy h:mm", "M/d/yyyy h:mm", _
                                 "MM/dd/yyyy hh:mm", "M/dd/yyyy hh:mm",
                                 "MM/d/yyyy HH:mm:ss.ffffff" }
      Dim dateStrings() As String = {"5/1/2009 6:32 PM", "05/01/2009 6:32:05 PM", _
                                     "5/1/2009 6:32:00", "05/01/2009 06:32", _
                                     "05/01/2009 06:32:00 PM", "05/01/2009 06:32:00",
                                     "08/28/2015 16:17:39.125", "08/28/2015 16:17:39.125000" }

      Dim dateValue As DateTime
      
      For Each dateString As String In dateStrings
         Try
            dateValue = DateTime.ParseExact(dateString, formats, _
                                            New CultureInfo("en-US"), _
                                            DateTimeStyles.None)
            Console.WriteLine("Converted '{0}' to {1}.", dateString, dateValue)
         Catch e As FormatException
            Console.WriteLine("Unable to convert '{0}' to a date.", dateString)
         End Try                                               
      Next
   End Sub
End Module
' The example displays the following output:
'       Converted '5/1/2009 6:32 PM' to 5/1/2009 6:32:00 PM.
'       Converted '05/01/2009 6:32:05 PM' to 5/1/2009 6:32:05 PM.
'       Converted '5/1/2009 6:32:00' to 5/1/2009 6:32:00 AM.
'       Converted '05/01/2009 06:32' to 5/1/2009 6:32:00 AM.
'       Converted '05/01/2009 06:32:00 PM' to 5/1/2009 6:32:00 PM.
'       Converted '05/01/2009 06:32:00' to 5/1/2009 6:32:00 AM.
'       Unable to convert '08/28/2015 16:17:39.125' to a date.
'       Converted '08/28/2015 16:17:39.125000' to 8/28/2015 4:17:39 PM.

Comentarios

El DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) método analiza la representación de cadena de una fecha que coincide con cualquiera de los patrones asignados formats al parámetro.The DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) method parses the string representation of a date that matches any one of the patterns assigned to the formats parameter. Si la cadena s no coincide con ninguno de estos patrones con cualquiera de las variaciones definidas por el styles parámetro, el método produce una FormatExceptionexcepción.If the string s does not match any one of these patterns with any of the variations defined by the styles parameter, the method throws a FormatException. Además de comparar s con varios patrones de formato, en lugar de hacerlo con un solo patrón de formato, esta sobrecarga se comporta igual que DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles) el método.Aside from comparing s to multiple formatting patterns, rather than to a single formatting pattern, this overload behaves identically to the DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles) method.

El s parámetro contiene la fecha y hora que se van a analizar.The s parameter contains the date and time to parse. Si el s parámetro contiene solo una hora y ninguna fecha, se usa la fecha actual a menos style que el parámetro DateTimeStyles.NoCurrentDateDefault incluya la marca, en cuyo caso se utilizaDateTime.Date.MinValuela fecha predeterminada ().If the s parameter contains only a time and no date, the current date is used unless the style parameter includes the DateTimeStyles.NoCurrentDateDefault flag, in which case the default date (DateTime.Date.MinValue) is used. Si el s parámetro contiene solo una fecha y sin hora, se usa la medianoche (00:00:00).If the s parameter contains only a date and no time, midnight (00:00:00) is used. El style parámetro también determina si el s parámetro puede contener caracteres de espacio en blanco iniciales, internos o finales distintos de los permitidos por una de las cadenas de formatsformato de.The style parameter also determines whether the s parameter can contain leading, inner, or trailing white space characters other than those permitted by one of the format strings in formats.

Si s no contiene información de zona horaria, Kind la propiedad del objeto DateTime devuelto DateTimeKind.Unspecifiedes.If s contains no time zone information, the Kind property of the returned DateTime object is DateTimeKind.Unspecified. Este comportamiento se puede DateTimeStyles.AssumeLocal cambiar mediante la marca, que devuelve un DateTime valor cuya Kind propiedad es DateTimeKind.Local, o mediante las DateTimeStyles.AssumeUniversal marcas y DateTimeStyles.AdjustToUniversal , que devuelve un DateTime valor cuyo la propiedad DateTimeKind.Utces. KindThis behavior can be changed by using the DateTimeStyles.AssumeLocal flag, which returns a DateTime value whose Kind property is DateTimeKind.Local, or by using the DateTimeStyles.AssumeUniversal and DateTimeStyles.AdjustToUniversal flags, which returns a DateTime value whose Kind property is DateTimeKind.Utc. Si s contiene información de zona horaria, la hora se convierte en la hora local, si es necesario Kind , y la propiedad DateTime del objeto devuelto DateTimeKind.Localse establece en.If s contains time zone information, the time is converted to local time, if necessary, and the Kind property of the returned DateTime object is set to DateTimeKind.Local. Este comportamiento se puede cambiar mediante el uso DateTimeStyles.RoundtripKind de la marca para no convertir la hora universal coordinada (UTC) a una hora Kind local y DateTimeKind.Utcestablecer la propiedad en.This behavior can be changed by using the DateTimeStyles.RoundtripKind flag to not convert Coordinated Universal Time (UTC) to a local time and set the Kind property to DateTimeKind.Utc.

El formats parámetro contiene una matriz de patrones, uno de los s cuales debe coincidir exactamente si la operación de análisis es correcta.The formats parameter contains an array of patterns, one of which s must match exactly if the parse operation is to succeed. Los patrones formats del parámetro se componen de uno o varios especificadores de formato personalizado a partir de la tabla de cadenas de formato de fecha y hora personalizado , o un único especificador de formato estándar, que identifica un patrón predefinido, de la fecha estándar y Tabla de cadenas de formato de hora.The patterns in the formats parameter consists of one or more custom format specifiers from the Custom Date and Time Format Strings table, or a single standard format specifier, which identifies a predefined pattern, from the Standard Date and Time Format Strings table.

Si no usa separadores de fecha y hora en un modelo de formato personalizado, use la referencia cultural de todos provider los idiomas para el parámetro y la forma más amplia de cada especificador de formato personalizado.If you do not use date or time separators in a custom format pattern, use the invariant culture for the provider parameter and the widest form of each custom format specifier. Por ejemplo, si desea especificar las horas en el patrón, especifique la forma más ancha, "HH", en lugar de la forma más estrecha, "H".For example, if you want to specify hours in the pattern, specify the wider form, "HH", instead of the narrower form, "H".

El styles parámetro incluye uno o más miembros de la DateTimeStyles enumeración que determinan si los espacios en blanco format no definidos por s pueden aparecer en y que controlan el comportamiento preciso de la operación de análisis.The styles parameter includes one or more members of the DateTimeStyles enumeration that determine whether and where white space not defined by format can appear in s and that control the precise behavior of the parse operation. En la tabla siguiente se describe cómo cada miembro DateTimeStyles de la enumeración afecta a ParseExact(String, String, IFormatProvider, DateTimeStyles) la operación del método.The following table describes how each member of the DateTimeStyles enumeration affects the operation of the ParseExact(String, String, IFormatProvider, DateTimeStyles) method.

DateTimeStyles (miembro)DateTimeStyles member DescripciónDescription
AdjustToUniversal s Analiza y, si es necesario, lo convierte en UTC.Parses s and, if necessary, converts it to UTC. Si s incluye un ajuste de zona horaria o si s no contiene información de zona horaria styles pero incluye DateTimeStyles.AssumeLocal la marca, el método analiza la cadena, llama ToUniversalTime a para convertir el DateTime valor devuelto a UTC. y establece la Kind propiedad en DateTimeKind.Utc.If s includes a time zone offset, or if s contains no time zone information but styles includes the DateTimeStyles.AssumeLocal flag, the method parses the string, calls ToUniversalTime to convert the returned DateTime value to UTC, and sets the Kind property to DateTimeKind.Utc. Si s indica que representa la hora UTC, o s si no contiene información de zona horaria styles pero incluye DateTimeStyles.AssumeUniversal la marca, el método analiza la cadena, no realiza ninguna conversión de zona horaria en DateTime el valor devuelto. y establece la Kind propiedad en DateTimeKind.Utc.If s indicates that it represents UTC, or if s does not contain time zone information but styles includes the DateTimeStyles.AssumeUniversal flag, the method parses the string, performs no time zone conversion on the returned DateTime value, and sets the Kind property to DateTimeKind.Utc. En todos los demás casos, la marca no tiene ningún efecto.In all other cases, the flag has no effect.
AllowInnerWhite Especifica que los espacios en blanco no format definidos por pueden aparecer entre cualquier elemento de fecha u hora individual.Specifies that white space not defined by format can appear between any individual date or time element.
AllowLeadingWhite Especifica que el espacio en blanco no format definido por puede aparecer al principio sde.Specifies that white space not defined by format can appear at the beginning of s.
AllowTrailingWhite Especifica que el espacio en blanco no format definido por puede aparecer al final sde.Specifies that white space not defined by format can appear at the end of s.
AllowWhiteSpaces Especifica que s puede contener espacios en blanco iniciales, internos y finales no definidos por format.Specifies that s may contain leading, inner, and trailing white spaces not defined by format.
AssumeLocal Especifica que si s falta información de zona horaria, se supone que representa una hora local.Specifies that if s lacks any time zone information, it is assumed to represent a local time. A menos DateTimeStyles.AdjustToUniversal que la marca esté presente Kind , la propiedad del DateTime valor devuelto se DateTimeKind.Localestablece en.Unless the DateTimeStyles.AdjustToUniversal flag is present, the Kind property of the returned DateTime value is set to DateTimeKind.Local.
AssumeUniversal Especifica que si s falta información de zona horaria, se supone que representa la hora UTC.Specifies that if s lacks any time zone information, it is assumed to represent UTC. A menos DateTimeStyles.AdjustToUniversal que la marca esté presente, el método convierte el DateTime valor devuelto de UTC a hora local y Kind establece su DateTimeKind.Localpropiedad en.Unless the DateTimeStyles.AdjustToUniversal flag is present, the method converts the returned DateTime value from UTC to local time and sets its Kind property to DateTimeKind.Local.
NoCurrentDateDefault Si s contiene la información de hora sin fecha, la fecha del valor devuelto se DateTime.MinValue.Dateestablece en.If s contains time without date information, the date of the return value is set to DateTime.MinValue.Date.
None El s parámetro se analiza con los valores predeterminados.The s parameter is parsed using default values. No se permite ningún espacio en blanco que format no sea el presente en.No white space other than that present in format is allowed. Si s falta un componente de fecha, la fecha del valor devuelto DateTime se establece en 1/1/0001.If s lacks a date component, the date of the returned DateTime value is set to 1/1/0001. Si s no contiene información de zona horaria, Kind la propiedad del objeto DateTime devuelto se establece DateTimeKind.Unspecifieden.If s contains no time zone information, the Kind property of the returned DateTime object is set to DateTimeKind.Unspecified. Si hay información de zona horaria en s, la hora se convierte en la hora local y Kind la propiedad del objeto DateTime devuelto se establece DateTimeKind.Localen.If time zone information is present in s, the time is converted to local time and the Kind property of the returned DateTime object is set to DateTimeKind.Local.
RoundtripKind En el caso de las cadenas que contienen información de zona horaria, intenta evitar la conversión a una fecha Kind y hora con DateTimeKind.Localsu propiedad establecida en.For strings that contain time zone information, tries to prevent the conversion to a date and time with its Kind property set to DateTimeKind.Local. Esta marca evita principalmente la conversión de horas UTC en horas locales.This flag primarily prevents the conversion of UTC times to local times.

Los símbolos y cadenas de fecha y hora concretos (como los nombres de los días de la semana en un idioma determinado) que se s usan en se definen provider mediante el parámetro, como es el formato s preciso format de si es un formato estándar. cadena de especificador.The particular date and time symbols and strings (such as the names of the days of the week in a particular language) used in s are defined by the provider parameter, as is the precise format of s if format is a standard format specifier string. El provider parámetro puede ser cualquiera de los siguientes:The provider parameter can be any of the following:

Si provider CultureInfo es null, se utiliza el objeto que se corresponde con la referencia cultural actual.If provider is null, the CultureInfo object that corresponds to the current culture is used.

Notas a los autores de las llamadas

En, el ParseExact método produce una FormatException excepción si la cadena que se va a analizar contiene un componente de hora y un designador AM/PM que no están en el acuerdo. .NET Framework 4.NET Framework 4In the .NET Framework 4.NET Framework 4, the ParseExact method throws a FormatException if the string to be parsed contains an hour component and an AM/PM designator that are not in agreement. .NET Framework 3,5.NET Framework 3.5 En y versiones anteriores, se omite el designador AM/PM.In the .NET Framework 3,5.NET Framework 3.5 and earlier versions, the AM/PM designator is ignored.

Consulte también:

Se aplica a