Conversion d'un string en date sous un format donné

Soyez le premier à donner votre avis sur cette source.

Vue 31 541 fois - Téléchargée 525 fois

Description

Vous connaissez la fonction format en l'utilisant avec une date:
unString= format (unedate,"jj MM yy, hh:mm:ss" )

Ben la c'est le contraire:
uneDate= Cdate(toDate(chaine as string, monformat as string)

Cà a l'air de bien marcher, tous les formats ne sont pas acceptés, je butte un peu avec les mois écrits en lettre mais je devrais y arriver. J'attends avant tout de votre part des tests bien tordus pour évaluer cette fonction.

Actuellement, la fonction se limite à comparer la position des caractères. Cà devrait satisfaire déjà beaucoup de monde.

Source / Exemple :


Public Function toDate(chaine As String, format As String) As String

Dim i As Integer
Dim j As Integer

Dim car As String
Dim car2 As String
Dim annee As String
Dim mois As String
Dim moisI As Integer
Dim jour As String
Dim heure As String
Dim min As String
Dim sec As String
Dim datestring As String
Dim Lettre As Integer
Lettre = 0
i = 1
j = 1
While (i < Len(format) And j < Len(chaine))
        car = Mid(format, i, 1)
        Select Case car
            Case "y"
                annee = annee & Mid(chaine, j, 1)
            Case "M"
                car2 = Mid(chaine, j, 1)
                If car2 <= "z" And car2 >= "A" And Lettre = 0 Then 'on est avec des mois sous forme de lettres
                    car2 = car
                    While (i < Len(format) And car2 = "M") 'je passe les mois dans le format
                        car2 = Mid(format, i, 1)
                        i = i + 1
                    Wend
                    i = i - 2 'c'est pour la boucle du while principal... j'ajuste
                    car2 = Mid(chaine, j, 1)
                    ' puis je cherche tous les caractères qui sont des lettres
                    While (j < Len(chaine) And car2 <= "z" And car2 > "9")
                        mois = mois & car2
                        j = j + 1
                        car2 = Mid(chaine, j, 1)
                        
                    Wend
                    j = j - 1 'j'ajuste aussi
                Else
                    mois = mois & Mid(chaine, j, 1) 'sinon c'est cool
                End If
            Case "d"
                jour = jour & Mid(chaine, j, 1)
            Case "h"
                heure = heure & Mid(chaine, j, 1)
            Case "m"
                min = min & Mid(chaine, j, 1)
            Case "s"
                sec = sec & Mid(chaine, j, 1)
        End Select
        j = j + 1
        i = i + 1
Wend

If Len(annee) < 2 Then
annee = "20" & annee
End If

If Len(annee) < 4 Then
annee = "2000"
End If

If Len(mois) < 2 Then
mois = "00"
End If

If Len(jour) < 2 Then
jour = "00"
End If

If Len(heure) < 2 Then
heure = "00"
End If

If Len(min) < 2 Then
min = "00"
End If

If Len(sec) < 2 Then
sec = "00"
End If

On Error GoTo passer
moisI = CInt(mois)

 Select Case moisI
        Case 1
        mois = "Janv"
        Case 2
        mois = "Févr"
        Case 3
        mois = "Mars"
        Case 4
        mois = "Avr"
        Case 5
        mois = "Mai"
        Case 6
        mois = "Juin"
        Case 7
        mois = "Juil"
        Case 8
        mois = "Août"
        Case 9
        mois = "Sept"
        Case 10
        mois = "Oct"
        Case 11
        mois = "Nov"
        Case 12
        mois = "Déc"
    End Select

passer:

datestring = jour & " " & mois & " " & annee & " " & heure & ":" & min & ":" & sec

MsgBox datestring

toDate = datestring

End Function

Conclusion :


Le Zip présente une application toute con de la fonction

Codes Sources

A voir également

Ajouter un commentaire Commentaire
Messages postés
125
Date d'inscription
lundi 26 avril 2004
Statut
Membre
Dernière intervention
17 juin 2011

Y a juste une faute:
While (i <= Len(format) And j <= Len(chaine))
manquait les =.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.