Esta es el arreglo más válida que encomtrarás dar, pero primero estúdiala detenidamente y valora si se adapta a tu proyecto.
Solución:
necesitas usar DateTime.ParseExact
con formato "dd/MM/yyyy"
DateTime dt=DateTime.ParseExact("24/01/2013", "dd/MM/yyyy", CultureInfo.InvariantCulture);
Es más seguro si usa d/M/yyyy
para el formato, ya que manejará día/mes de un solo dígito y de dos dígitos. Pero eso realmente depende de si espera valores de uno o dos dígitos.
Tu formato de fecha day/Month/Year
podría ser un formato de fecha aceptable para algunas culturas. Por ejemplo para la cultura canadiense en-CA
DateTime.Parse
funcionaría como:
DateTime dt = DateTime.Parse("24/01/2013", new CultureInfo("en-CA"));
O
System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-CA");
DateTime dt = DateTime.Parse("24/01/2013"); //uses the current Thread's culture
Ambas líneas anteriores funcionarían porque el stringEl formato de es aceptable para en-CA
cultura. Ya que no estás proporcionando ninguna cultura a tu DateTime.Parse
llamada, su cultura actual se usa para el análisis que no admite el formato de fecha. Lea más sobre esto en DateTime.Parse.
Otro método para analizar es usar DateTime.TryParseExact
DateTime dt;
if (DateTime.TryParseExact("24/01/2013",
"d/M/yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out dt))
//valid date
else
//invalid date
los TryParse
grupo de métodos en .Net framework no arroja una excepción en valores no válidos, sino que devuelve un bool
valor que indica el éxito o el fracaso en el análisis.
Aviso que he usado solo d
y M
para el día y el mes respectivamente. Único d
y M
funciona tanto para el día como para el mes de uno o dos dígitos. Entonces para el formato d/M/yyyy
valores válidos podrían ser:
- “24/01/2013”
- “24/1/2013”
- “12/4/2013” //4 de diciembre de 2013
- “04/12/2013”
Para leer más, debería ver: Cadenas de formato de fecha y hora personalizadas
utilizar DateTime.ParseExact
string strDate = "24/01/2013";
DateTime date = DateTime.ParseExact(strDate, "dd/MM/YYYY", null)
- DateTime.ParseExact
null
utilizará la cultura actual, que es algo peligrosa. Trate de proporcionar una cultura específica
DateTime date = DateTime.ParseExact(strDate, "dd/MM/YYYY", CultureInfo.InvariantCulture)
Puedes usar "dd/MM/yyyy"
formato para usarlo en DateTime.ParseExact
.
Convierte lo especificado string representación de una fecha y hora a su equivalente DateTime utilizando el formato especificado y la información de formato específica de la cultura. El formato de la string La representación debe coincidir exactamente con el formato especificado.
DateTime date = DateTime.ParseExact("24/01/2013", "dd/MM/yyyy", CultureInfo.InvariantCulture);
Aquí hay un DEMO
.
Para obtener más información, consulte Custom Date and Time Format Strings
Comentarios y puntuaciones del post
Si te ha sido útil este post, sería de mucha ayuda si lo compartes con el resto juniors de este modo nos ayudas a difundir nuestro contenido.