.NET Framework
Análisis DateTime
Buscar..
ParseExact
var dateString = "2015-11-24";
var date = DateTime.ParseExact(dateString, "yyyy-MM-dd", null);
Console.WriteLine(date);
24/11/2015 12:00:00 a.m.
Tenga en cuenta que pasar CultureInfo.CurrentCulture
como tercer parámetro es idéntico a pasar null
. O bien, puede pasar una cultura específica.
Formato de cadenas
La cadena de entrada puede estar en cualquier formato que coincida con la cadena de formato
var date = DateTime.ParseExact("24|201511", "dd|yyyyMM", null);
Console.WriteLine(date);
24/11/2015 12:00:00 a.m.
Los caracteres que no son especificadores de formato se tratan como literales
var date = DateTime.ParseExact("2015|11|24", "yyyy|MM|dd", null);
Console.WriteLine(date);
24/11/2015 12:00:00 a.m.
El caso importa para los especificadores de formato
var date = DateTime.ParseExact("2015-01-24 11:11:30", "yyyy-mm-dd hh:MM:ss", null);
Console.WriteLine(date);
24/11/2015 11:01:30 AM
Tenga en cuenta que los valores de mes y minuto se analizaron en los destinos incorrectos.
Las cadenas de formato de un solo carácter deben ser uno de los formatos estándar.
var date = DateTime.ParseExact("11/24/2015", "d", new CultureInfo("en-US"));
var date = DateTime.ParseExact("2015-11-24T10:15:45", "s", null);
var date = DateTime.ParseExact("2015-11-24 10:15:45Z", "u", null);
Excepciones
ArgumentNullException
var date = DateTime.ParseExact(null, "yyyy-MM-dd", null);
var date = DateTime.ParseExact("2015-11-24", null, null);
FormatException
var date = DateTime.ParseExact("", "yyyy-MM-dd", null);
var date = DateTime.ParseExact("2015-11-24", "", null);
var date = DateTime.ParseExact("2015-0C-24", "yyyy-MM-dd", null);
var date = DateTime.ParseExact("2015-11-24", "yyyy-QQ-dd", null);
// Single-character format strings must be one of the standard formats
var date = DateTime.ParseExact("2015-11-24", "q", null);
// Format strings must match the input exactly* (see next section)
var date = DateTime.ParseExact("2015-11-24", "d", null); // Expects 11/24/2015 or 24/11/2015 for most cultures
Manejando múltiples formatos posibles.
var date = DateTime.ParseExact("2015-11-24T10:15:45",
new [] { "s", "t", "u", "yyyy-MM-dd" }, // Will succeed as long as input matches one of these
CultureInfo.CurrentCulture, DateTimeStyles.None);
Manejando las diferencias culturales.
var dateString = "10/11/2015";
var date = DateTime.ParseExact(dateString, "d", new CultureInfo("en-US"));
Console.WriteLine("Day: {0}; Month: {1}", date.Day, date.Month);
Día: 11; Mes: 10
date = DateTime.ParseExact(dateString, "d", new CultureInfo("en-GB"));
Console.WriteLine("Day: {0}; Month: {1}", date.Day, date.Month);
Día: 10; Mes: 11
TryParse
Este método acepta una cadena como entrada, intenta analizarla en un DateTime
y devuelve un resultado booleano que indica éxito o fracaso. Si la llamada se realiza correctamente, la variable que se pasa como parámetro de out
se completa con el resultado analizado.
Si el análisis falla, la variable que se pasa como parámetro de out
se establece en el valor predeterminado, DateTime.MinValue
.
TryParse (cadena, fecha y hora)
DateTime parsedValue;
if (DateTime.TryParse("monkey", out parsedValue))
{
Console.WriteLine("Apparently, 'monkey' is a date/time value. Who knew?");
}
Este método intenta analizar la cadena de entrada según la configuración regional del sistema y los formatos conocidos, como ISO 8601 y otros formatos comunes.
DateTime.TryParse("11/24/2015 14:28:42", out parsedValue); // true
DateTime.TryParse("2015-11-24 14:28:42", out parsedValue); // true
DateTime.TryParse("2015-11-24T14:28:42", out parsedValue); // true
DateTime.TryParse("Sat, 24 Nov 2015 14:28:42", out parsedValue); // true
Dado que este método no acepta información de cultura, utiliza la configuración regional del sistema. Esto puede llevar a resultados inesperados.
// System set to en-US culture
bool result = DateTime.TryParse("24/11/2015", out parsedValue);
Console.WriteLine(result);
Falso
// System set to en-GB culture
bool result = DateTime.TryParse("11/24/2015", out parsedValue);
Console.WriteLine(result);
Falso
// System set to en-GB culture
bool result = DateTime.TryParse("10/11/2015", out parsedValue);
Console.WriteLine(result);
Cierto
Tenga en cuenta que si se encuentra en EE. UU., Le sorprenderá que el resultado analizado sea el 10 de noviembre, no el 11 de octubre.
TryParse (cadena, IFormatProvider, DateTimeStyles, out DateTime)
if (DateTime.TryParse(" monkey ", new CultureInfo("en-GB"),
DateTimeStyles.AllowLeadingWhite | DateTimeStyles.AllowTrailingWhite, out parsedValue)
{
Console.WriteLine("Apparently, ' monkey ' is a date/time value. Who knew?");
}
A diferencia de su método de hermanos, esta sobrecarga permite especificar una cultura y un estilo específicos. El paso null
para el parámetro IFormatProvider
utiliza la cultura del sistema.
Excepciones
Tenga en cuenta que es posible que este método arroje una excepción bajo ciertas condiciones. Estos se relacionan con los parámetros introducidos para esta sobrecarga: IFormatProvider
y DateTimeStyles
.
-
NotSupportedException
:IFormatProvider
especifica una cultura neutral -
ArgumentException
:DateTimeStyles
no es una opción válida, o contiene indicadores incompatibles comoAssumeLocal
yAssumeUniversal
.
TryParseExact
Este método se comporta como una combinación de TryParse
y ParseExact
: permite que se especifiquen formatos personalizados y devuelve un resultado booleano que indica el éxito o el fracaso en lugar de lanzar una excepción si el análisis falla.
TryParseExact (cadena, cadena, IFormatProvider, DateTimeStyles, out DateTime)
Esta sobrecarga intenta analizar la cadena de entrada en un formato específico. La cadena de entrada debe coincidir con ese formato para poder ser analizada.
DateTime.TryParseExact("11242015", "MMddyyyy", null, DateTimeStyles.None, out parsedValue); // true
TryParseExact (cadena, cadena [], IFormatProvider, DateTimeStyles, out DateTime)
Esta sobrecarga intenta analizar la cadena de entrada en una matriz de formatos. La cadena de entrada debe coincidir con al menos un formato para ser analizada.
DateTime.TryParseExact("11242015", new [] { "yyyy-MM-dd", "MMddyyyy" }, null, DateTimeStyles.None, out parsedValue); // true