Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original. |
Traducción
Original
|
DateTime.ParseExact (Método) (String, String[], IFormatProvider, DateTimeStyles)
Convierte la representación de cadena especificada para una fecha y hora en su estructura DateTime equivalente, utilizando la matriz de formatos, la información de formato específica de la referencia cultural y el estilo indicados. 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.
Ensamblado: mscorlib (en mscorlib.dll)
public static DateTime ParseExact( string s, string[] formats, IFormatProvider provider, DateTimeStyles style )
Parámetros
- s
- Tipo: System.String
Cadena que contiene una o más fechas y horas que se van a convertir.
- formats
- Tipo: System.String[]
Matriz de formatos admisibles de s.
- provider
- Tipo: System.IFormatProvider
Objeto que aporta información de formato específica de la referencia cultural acerca de s.
- style
- Tipo: System.Globalization.DateTimeStyles
Combinación bit a bit de valores de enumeración que indica el formato permitido de s. Un valor que se especifica de forma habitual es None.
Valor devuelto
Tipo: System.DateTimeObjeto equivalente a la fecha y hora contenidas en s, tal como especifican formats, provider y style.
| Excepción | Condición |
|---|---|
| ArgumentNullException |
El valor de s o formats es null. |
| FormatException |
s es una cadena vacía. O bien Un elemento de formats es una cadena vacía. O bien s no contiene una fecha y hora que se correspondan con cualquier elemento de formats. O bien El componente de hora y el designador AM/PM en s no coinciden. |
| ArgumentException |
style contiene una combinación no válida de valores DateTimeStyles. Por ejemplo, AssumeLocal y AssumeUniversal. |
El método DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) analiza la representación de cadena de una fecha que coincide con cualquiera de los modelos asignados al parámetro formats. Si uno de estos modelos de la cadena s no coincide con cualquiera de las variaciones definidas por el parámetro styles, el método produce una excepción FormatException. Además de comparar s con varios modelos de formato en lugar de con un único modelo de formato, esta sobrecarga se comporta igual que el método DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles).
El parámetro s contiene la fecha y la hora que se van a analizar. Si el parámetro s contiene solamente una hora pero ninguna fecha, se usa la fecha actual, a menos que el parámetro style incluya el marcador DateTimeStyles.NoCurrentDateDefault, en cuyo caso se usa fecha predeterminada (DateTime.Date.MinValue). Si el parámetro s contiene sólo una fecha pero ninguna hora, se utiliza la medianoche (00:00:00). El parámetro style también determina si el parámetro s puede contener caracteres de espacio en blanco iniciales, interiores o finales distintos de los permitidos por una de las cadenas de formato de formats.
Si el parámetro s no incluye información de zona horaria, la propiedad Kind del objeto DateTime devuelto será DateTimeKind.Unspecified. Este comportamiento puede modificarse utilizando el marcador DateTimeStyles.AssumeLocal, que devuelve un valor DateTime cuya propiedad Kind es DateTimeKind.Local, o utilizando los marcadores DateTimeStyles.AssumeUniversal y DateTimeStyles.AdjustToUniversal, que devuelven un valor DateTime cuya propiedad Kind es DateTimeKind.Utc. Si s incluye información de la zona horaria, la hora se convierte a la hora local, si es necesario, y la propiedad Kind del objeto DateTime devuelto se establece en DateTimeKind.Local. Este comportamiento puede modificarse usando el marcador DateTimeStyles.RoundtripKind para no convertir la hora universal coordinada (UTC) en una hora local y establecer la propiedad Kind en DateTimeKind.Utc.
El parámetro formats contiene una matriz de modelos, uno de los cuales debe coincidir exactamente con s para que la operación de análisis se realice correctamente. Los modelos del parámetro formats se componen de uno o varios especificadores de formato personalizados que provienen de la tabla Cadenas de formato de fecha y hora personalizadas, o de un solo especificador de formato estándar, que identifica un modelo predefinido, de la tabla Cadenas con formato de fecha y hora estándar.
Si no usa los separadores de fecha u hora de un modelo de formato personalizado, utilice la referencia cultural de todos los idiomas para el parámetro provider y el formato más extenso de cada especificador de formato personalizado. Por ejemplo, si desea establecer horas en el modelo, especifique el formato largo, "HH", en lugar del formato corto, "H".
El parámetro styles incluye uno o más miembros de la enumeración DateTimeStyles que determinan si pueden aparecer espacios en blanco no definidos por format en s y dónde pueden aparecer, y controla el comportamiento exacto de la operación de análisis. En la tabla siguiente se describe el modo en que la operación del método ParseExact(String, String, IFormatProvider, DateTimeStyles) afecta a cada uno de los miembros de la enumeración DateTimeStyles.
|
Miembro DateTimeStyles |
Descripción |
|---|---|
|
Analiza s y, si es necesario, lo convierte en la hora UTC. Si s incluye un desplazamiento de zona horaria o si s no contiene ninguna información de zona horaria, pero styles incluye el marcador DateTimeStyles.AssumeLocal, el método analiza la cadena, llama a ToUniversalTime para convertir el valor DateTime devuelto en hora UTC y establece la propiedad Kind en DateTimeKind.Utc. Si s indica que representa la hora UTC o si s no contiene información de la zona horaria, pero styles incluye el marcador DateTimeStyles.AssumeUniversal, el método analiza la cadena, no realiza ninguna conversión de zona horaria en el valor DateTime devuelto y establece la propiedad Kind en DateTimeKind.Utc. En todos los demás casos, el marcador no tiene ningún efecto. |
|
|
AllowInnerWhite |
Especifica que pueden aparecer espacios en blanco no definidos por format entre cualquier elemento de fecha y hora individual. |
|
AllowLeadingWhite |
Especifica que pueden aparecer espacios en blanco no definidos por format al principio de s. |
|
AllowTrailingWhite |
Especifica que pueden aparecer espacios en blanco no definidos por format al final de s. |
|
AllowWhiteSpaces |
Especifica que s puede contener espacios en blanco iniciales, internos y finales no definidos por format. |
|
AssumeLocal |
Especifica que, si s carece de cualquier información de zona horaria, se supone que representa una hora local. A menos que esté presente el marcador DateTimeStyles.AdjustToUniversal, la propiedad Kind del valor DateTime devuelto está establecida en DateTimeKind.Local. |
|
AssumeUniversal |
Especifica que si s carece de cualquier información de zona horaria, se supone que representa la hora UTC. A menos que esté presente el marcador DateTimeStyles.AdjustToUniversal, el método convierte el valor DateTime devuelto de hora UTC en la hora local y establece su propiedad Kind en DateTimeKind.Local. |
|
Si s incluye una hora sin información de fecha, la fecha del valor devuelto se establece en DateTime.MinValue.Date. |
|
|
None |
El parámetro s se analiza utilizando los valores predeterminados. No se permiten más espacios en blanco que los que estén presentes en format. Si s no tiene un componente de fecha, la fecha del valor DateTime devuelto se establece en 1/1/0001. Si s no contiene información sobre la zona horaria, la propiedad Kind del objeto DateTime devuelto se establece en DateTimeKind.Unspecified. Si hay información de la zona horaria presente en el parámetro s, la hora se convierte a la hora local y la propiedad Kind del objeto DateTime devuelto se establece en DateTimeKind.Local. |
|
En el caso de las cadenas que contienen información de la zona horaria, intenta impedir la conversión en una fecha y hora con su propiedad Kind establecida en DateTimeKind.Local. Este marcador impide principalmente la conversión de horas UTC en horas locales. |
Los símbolos y cadenas de fecha y hora concretos (como los nombres de los días de la semana de un idioma determinado) que se usan en s se definen con el parámetro provider, al igual que el formato exacto de s si format es una cadena de especificador de formato estándar. El parámetro provider puede ser uno de los siguientes:
-
Un objeto CultureInfo que representa la referencia cultural utilizada para interpretar s. El objeto DateTimeFormatInfo devuelto por su propiedad DateTimeFormat define los símbolos y el formato en s.
-
Objeto DateTimeFormatInfo que define el formato de los datos de fecha y hora.
-
Una implementación IFormatProvider personalizada cuyo método GetFormat devuelve el objeto CultureInfo o el objeto DateTimeFormatInfo que proporciona información de formato.
Si provider es null, se usa el objeto CultureInfo que corresponde a la referencia cultural actual.
Notas para los llamadores
En .NET Framework 4, el método ParseExact produce FormatException si la cadena que se va a analizar contiene un componente de hora y un designador AM/PM que no concuerdan. En .NET Framework 3.5 y en versiones anteriores, el designador AM/PM se pasa por alto.
El ejemplo siguiente usa el método DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) para asegurarse de que una cadena en una serie de formatos posibles pueda analizarse correctamente.
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"}; 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"}; 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.
Windows 7, Windows Vista SP1 o posterior, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (no se admite Server Core), Windows Server 2008 R2 (se admite Server Core con SP1 o posterior), Windows Server 2003 SP2
.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.