Saltar al contenido

Conversión con formato dd/mm/yyyy string hasta fecha y hora

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-CADateTime.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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *