0 votes

Comment puis-je convertir deux chaînes de caractères en DateTimes et les comparer en VB.NET ?

La chaîne revient de la base de données avec un format : 00/00/0000' Je dois ensuite la comparer à une date que l'utilisateur a saisie dans le même format. Comment puis-je effectuer la conversion et comparer les deux dates ?

2voto

casperOne Points 49736

Utilisez la méthode statique ParseExact sur la structure DateTime pour convertir la chaîne. Vous passerez également le format souhaité, soit dd/MM/yyyy ou MM/dd/yyyy selon le format souhaité (l'exemple de 00/00/0000 ne donne aucune indication sur le format applicable pour vous).

1voto

emaster70 Points 3201

Vous pouvez utiliser

Dim dateA = DateTime.ParseExact(firstDateString, @"dd\/MM\/yyyy", Null)
Dim dateB = DateTime.ParseExact(secondDateString, @"dd\/MM\/yyyy", Null)
Dim areEqual = (dateA = dateB);

En supposant que votre format de date est jour/mois/année. Si c'est mois/jour/année, il suffit d'intervertir dd et MM.

0voto

Andrew Hare Points 159332

Essayez quelque chose comme ça :

String.Compare("00/00/0000", dateTime.ToString("MM/dd/yyyy"))

Mais peut-être qu'une meilleure approche serait de faire ceci :

DateTime.Equals(yourDateTime, DateTime.Parse(databaseDateTime));

0voto

JaredPar Points 333733

Essayez ce qui suit

Dim date1 = CDate(firstDateString)
Dim date2 = CDate(secondDateString)
Dim comp = date1 = date2

0voto

spacemonkeys Points 635

Quand vous dites "comparer", essayez-vous d'analyser si les dates sont les mêmes (au jour près) ou si elles sont comprises dans une période de quelques jours ? Si vous voulez comparer si les dates sont identiques, vous pouvez simplement comparer la chaîne de caractères ou utiliser date.equals (comme mentionné dans les messages précédents), si vous essayez de déterminer un intervalle, vous devrez utiliser date compare.

        Dim lDate1 As String = "29/03/2009"
    Dim lDate2 As String = "30/03/2009"
    Dim lPeriod As Int16 = 7

    If lDate1 = lDate2 Then
        '** Dates the same
    End If

    If Date.Equals(Date.ParseExact(lDate1, "dd/MM/yyyy", Nothing), Date.ParseExact(lDate2, "dd/MM/yyyy", Nothing)) Then
        '** The same
    End If

    If Date.Compare(Date.ParseExact(lDate1, "dd/MM/yyyy", Nothing), Date.ParseExact(lDate2, "dd/MM/yyyy", Nothing)) > (lPeriod * -1) And Date.Compare(Date.ParseExact(lDate1, "dd/MM/yyyy", Nothing), Date.ParseExact(lDate2, "dd/MM/yyyy", Nothing)) < lPeriod Then
        '** Within the period
    End If

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X