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
Este tema aún no ha recibido ninguna valoración - Valorar este tema

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.

Espacio de nombres:  System
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.DateTime
Objeto 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

AdjustToUniversal

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.

NoCurrentDateDefault

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.

RoundtripKind

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:

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.


.NET Framework

Compatible con: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

Compatible con:

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.
¿Le ha resultado útil?
(Caracteres restantes: 1500)
Contenido de la comunidad Agregar