web-dev-qa-db-fra.com

Convertir une chaîne en datetime

Je développe asp.net site utilisant vbframework 3.5.

J'ai des difficultés à convertir les données de chaîne en date, j'ai essayé d'utiliser la fonction cdate,

J'ai une variable sdate qui est une variable de chaîne et la date y est stockée qui vient de la zone de texte en tant que jj/mm/aaaa maintenant je veux convertir cette chaîne en une variable de date car j'ai besoin d'effectuer les opérations comme ajouter un jour ou soustraire un jour.

Veuillez me guider sur la façon de procéder. j'obtiens l'erreur sur la 3ème ligne comme, String was not recognized as a valid DateTime. J'ai essayé de faire comme suit mais l'erreur vient

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

Mais j'ai l'erreur comme

La conversion de String en type Date n'est pas valide.

Comment puis-je obtenir un Date de la chaîne?

17
Ishan

Vous devez utiliser Date.ParseExact ou Date.TryParseExact avec une chaîne de format correcte.

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

OR

 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)

OR

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)
43
adatapost

Personne n'a mentionné cela, mais dans certains cas, l'autre méthode ne parvient pas à reconnaître le datetime ...

Vous pouvez essayer ceci à la place, qui convertira la représentation sous forme de chaîne spécifiée d'une date et d'une heure en une valeur de date et d'heure équivalente

string iDate = "05/05/2005";
DateTime oDate = Convert.ToDateTime(iDate);
MessageBox.Show(oDate.Day + " " + oDate.Month + "  " + oDate.Year );
3
Inc33

Essayez de voir si le code suivant vous aide:

Dim iDate As String = "05/05/2005"
Dim oDate As DateTime = Convert.ToDateTime(iDate)
3
Doug Null

Essayez d'utiliser la méthode DateTime.ParseExact, dans laquelle vous pouvez spécifier à la fois le masque datetime et la chaîne analysée d'origine. Vous pouvez en lire plus ici: MSDN: DateTime.ParseExact

2
Dmitry Bastron

Essayez de convertir la date comme ceci:

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

J'espère que cela t'aides.

2
AlphaMale