Convertir una cadena en una fecha

Estoy desarrollando un sitio asp.net usando vb framework 3.5.

Estoy teniendo dificultades para convertir datos de cadena en fecha He intentado utilizar la función cdate,

Tengo una variable sdate que es una variable de cadena y la fecha se almacena en él que viene de cuadro de texto como dd / mm / aaaa ahora quiero convertir esta cadena en una variable de fecha como tengo que realizar las operaciones como añadir un día o restar un día.

Por favor, guíeme cómo hacer esto. Tengo el error en la 3 ª línea como, String no fue reconocido como un DateTime válida. He tratado de hacer lo siguiente pero el error viene

Dim sdate As String 
Dim expenddt As Date
expenddt = Date.Parse(edate)
expenddt = expenddt.AddDays(-1)

Pero me da el error como

La conversión de String a tipo Date no es válida.

Cómo puedo obtener una Fecha de la cadena?

Solución

Deberías usar Date.ParseExact o Date.TryParseExact con la cadena de formato correcta.

 Dim edate = "10/12/2009"
 Dim expenddt As Date = Date.ParseExact(edate, "dd/MM/yyyy", 
            System.Globalization.DateTimeFormatInfo.InvariantInfo)

O

 Dim format() = {"dd/MM/yyyy", "d/M/yyyy", "dd-MM-yyyy"}
 Dim expenddt As Date = Date.ParseExact(edate, format,  
     System.Globalization.DateTimeFormatInfo.InvariantInfo, 
     Globalization.DateTimeStyles.None)

O

Dim format() = {"dd/MM/yyyy", "d/M/yyyy", "dd-MM-yyyy"}
Dim expenddt As Date
Date.TryParseExact(edate, format, 
    System.Globalization.DateTimeFormatInfo.InvariantInfo, 
    Globalization.DateTimeStyles.None, expenddt)
Comentarios (2)

Intenta utilizar el método DateTime.ParseExact, en el que puedes especificar tanto la máscara de fecha como la cadena original analizada. Puedes leer sobre ello aquí: MSDN: DateTime.ParseExact

Comentarios (3)

Intenta convertir la fecha así:

    Dim expenddt as Date = Date.ParseExact(edate, "dd/mm/yyyy", 
System.Globalization.DateTimeFormatInfo.InvariantInfo);

Espero que esto ayude.

Comentarios (1)