Qu'en penses-tu ? Est-une direction souhaitable ou bien juste une
rustine ?
Je ne l'ai jamais fait, mais à mon avis c'est une solution très
valable. Les classes .NET peuvent être enregistrer en tant que
composant COM qui est supporté par VB6.
La seule raison pour laquelle j'aurais tendance à favoriser une
solution entièrement VB 6 ou encore via API, c'est pour le support et
le déploiement.
1. Un programme codé en plusieurs languages demande tout de même un
minimum de connaissance de ces languages et de leurs environnements
respectifs.
2. Déploiyer des composants COM n'est pas toujours une choses
faciles et dans ce cas ci, le composant COM en question emploi le
framework, j'entrevois des problèmes possibles de versionnage.
Donc en gros, je crois que c'est possible, que ça ne semble pas si
fou que ça, mais que ça complique tout de même la solution. Il suffit
bien se préparer et de bien documenter. :O)
Qu'en penses-tu ? Est-une direction souhaitable ou bien juste une
rustine ?
Je ne l'ai jamais fait, mais à mon avis c'est une solution très
valable. Les classes .NET peuvent être enregistrer en tant que
composant COM qui est supporté par VB6.
La seule raison pour laquelle j'aurais tendance à favoriser une
solution entièrement VB 6 ou encore via API, c'est pour le support et
le déploiement.
1. Un programme codé en plusieurs languages demande tout de même un
minimum de connaissance de ces languages et de leurs environnements
respectifs.
2. Déploiyer des composants COM n'est pas toujours une choses
faciles et dans ce cas ci, le composant COM en question emploi le
framework, j'entrevois des problèmes possibles de versionnage.
Donc en gros, je crois que c'est possible, que ça ne semble pas si
fou que ça, mais que ça complique tout de même la solution. Il suffit
bien se préparer et de bien documenter. :O)
Qu'en penses-tu ? Est-une direction souhaitable ou bien juste une
rustine ?
Je ne l'ai jamais fait, mais à mon avis c'est une solution très
valable. Les classes .NET peuvent être enregistrer en tant que
composant COM qui est supporté par VB6.
La seule raison pour laquelle j'aurais tendance à favoriser une
solution entièrement VB 6 ou encore via API, c'est pour le support et
le déploiement.
1. Un programme codé en plusieurs languages demande tout de même un
minimum de connaissance de ces languages et de leurs environnements
respectifs.
2. Déploiyer des composants COM n'est pas toujours une choses
faciles et dans ce cas ci, le composant COM en question emploi le
framework, j'entrevois des problèmes possibles de versionnage.
Donc en gros, je crois que c'est possible, que ça ne semble pas si
fou que ça, mais que ça complique tout de même la solution. Il suffit
bien se préparer et de bien documenter. :O)
Hello à tous qui vous êtes intéressés au problème.
Pourriez-vous republier vos messages.
J'ai fait une grosse c... en effaçant toute la conversation, sauf la
réponse de Jacques93.
Hello à tous qui vous êtes intéressés au problème.
Pourriez-vous republier vos messages.
J'ai fait une grosse c... en effaçant toute la conversation, sauf la
réponse de Jacques93.
Hello à tous qui vous êtes intéressés au problème.
Pourriez-vous republier vos messages.
J'ai fait une grosse c... en effaçant toute la conversation, sauf la
réponse de Jacques93.
Bonjour à tous qui m'aidez bien dans ma recherche,
.En folâtrant sur son clavier, Jacques93 s'est exprimé ainsi :Bonsoir Aski,
Aski a écrit :Bonjour,
Je désire convertir une date de la forme "23 fév 2005 18:33:22".
La routine suivante fonctionne correctement.
Par contre, si la chaîne a été inscrite en anglais, la conversion
CDate() n'est pas valide.
J'ai recherché un moyen de modifier la langue pour faire la
conversion et je n'ai trouvé que SetLocaleInfo() qui ne semble pas
adaptée à ce que je désire faire.
Avez-vous une idée géniale ?
Pas géniale, mais amusante : utiliser la fonction SetLocale de
VBScript dans une page HTML.
Voir ici pour d'autre format :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsmsclcid.asp
(Ajouter une référence à Microsoft HTML Object Library : MSHTML.tlb)
====================================================================== >>> Private Sub Command1_Click()
Dim S As String
Dim DDate As String
'fonctionne bien
S = "23 fév 2005 18:33:22"
DDate = CDate(S) + CDate("07:00")
S = Format$(DDate, "dddd dd mmm yyyy hh:mm")
Debug.Print S
'la conversion CDate() n'est pas valide
S = "9 Feb 2005 14:52:40"
S = CvtDate("en-gb", S)
DDate = CDate(S) + CDate("01:00")
S = Format$(DDate, "dddd dd mmm yyyy hh:mm")
Debug.Print S
End Sub
Private Function CvtDate(From As String, S As String) As Date
Dim fNum As Integer
Dim fName As String
Dim objMSHTML As mshtml.HTMLDocument
Dim oDoc As mshtml.HTMLDocument
fNum = FreeFile()
fName = App.Path & "Date.html"
Open fName For Output As #fNum
Print #fNum, "<html>"
Print #fNum, "<Body>"
Print #fNum, "<Script Language=" & Chr$(34) & "vbscript" &
Chr$(34) & ">" Print #fNum, "Dim CurrentLocale"
Print #fNum, "Dim GBDate"
Print #fNum, "Dim Original"
Print #fNum, "CurrentLocale=GetLocale"
Print #fNum, "GBDate=" & Chr$(34) & S & Chr$(34)
Print #fNum, "Original=SetLocale(" & Chr$(34) & From & Chr$(34) &
")" Print #fNum, "MyDateÍate(GBDate)"
Print #fNum, "Original=SetLocale(CurrentLocale)"
Print #fNum, "document.Writeln FormatDateTime(MyDate,
vbGeneralDate)" Print #fNum, "</Script>"
Print #fNum, "</Body>"
Print #fNum, "</html>"
Close #fNum
Set objMSHTML = New mshtml.HTMLDocument
Set oDoc = objMSHTML.createDocumentFromUrl(fName, vbNullString)
While oDoc.readyState <> "complete"
DoEvents
Wend
CvtDate = oDoc.documentElement.innerText
Set oDoc = Nothing
Set objMSHTML = Nothing
Kill fName
End Function
--
Cordialement,
Jacques.
J'ai bien sûr réussi à faire quelque chose avec les moyens du bord,
mais cela n'a rien de très génial.
Je vais bien sûr essayer toutes les solutions que vous avez proposées
et en profiter pour faire connaissance avec Framework dont on parle
tant. (ce qui me rappelle le premier 'intégré' que j'ai utilisé
lorsque j'ai viré de l'Apple II au PC lol ).
Mon but est d'interpréter les dates des messages de fichiers dbx
figurant dans l'entête du 'texte de brute'. En effet, elles ne sont
pas tout à fait les mêmes que celles décodées par l'analyse des
fichiers suivant Aroh (écart d'une minute au moins).
Il semblerait que toutes les dates sont fournies dans le format "Fri,
1 Apr 2005 19:02:05 +0100" et je désire avoir cette date en français
et en tenant compte des décalages (+0100, -0500, -0800, ...). Je n'ai
d'ailleurs pas trouvé de corrélation entre le décalage et cette
notation (d'où le Select Case de mon pôvre code). ;-(
Cordialement
Aski
////////////////////////////////////////////////////////
Private Sub Form_Load()
Dim i As Byte, Shift As Byte
Dim S As String, M As String, DDate As String
S = "Fri, 1 Apr 2005 19:02:05 +0100"
'isoler la date et le décalage
S = Mid$(S, InStr(S, ",") + 2)
'rechercher un décalage éventuel - sous toute réserve
If InStr(S, "+01") Then
Shift = 1
ElseIf InStr(S, "-05") Then Shift = 7
ElseIf InStr(S, "-08") Then Shift = 10
Else: Shift = 0
End If
'isoler la date
S = Trim$(Left$(S, InStrRev(S, ":") + 2))
'rechercher le mois
M = Mid$(S, InStr(S, " ") + 1, 3)
Select Case LCase(M)
Case "feb": S = Replace(S, M, "fév")
Case "apr": S = Replace(S, M, "avr")
Case "may": S = Replace(S, M, "mai")
Case "jun": S = Replace(S, M, "jui")
Case "jul": S = Replace(S, M, "juil")
Case "aug": S = Replace(S, M, "aoû")
Case "dec": S = Replace(S, M, "déc")
End Select
'ajout du décalage après conversion en variable Date
S = DateAdd("h", Shift, CDate(S))
'mise sous format OE
S = Format$(S, "dddd dd mmm yyyy hh:mm")
End Sub
////////////////////////////////////////////////////////////
Bonjour à tous qui m'aidez bien dans ma recherche,
.En folâtrant sur son clavier, Jacques93 s'est exprimé ainsi :
Bonsoir Aski,
Aski a écrit :
Bonjour,
Je désire convertir une date de la forme "23 fév 2005 18:33:22".
La routine suivante fonctionne correctement.
Par contre, si la chaîne a été inscrite en anglais, la conversion
CDate() n'est pas valide.
J'ai recherché un moyen de modifier la langue pour faire la
conversion et je n'ai trouvé que SetLocaleInfo() qui ne semble pas
adaptée à ce que je désire faire.
Avez-vous une idée géniale ?
Pas géniale, mais amusante : utiliser la fonction SetLocale de
VBScript dans une page HTML.
Voir ici pour d'autre format :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsmsclcid.asp
(Ajouter une référence à Microsoft HTML Object Library : MSHTML.tlb)
====================================================================== >>> Private Sub Command1_Click()
Dim S As String
Dim DDate As String
'fonctionne bien
S = "23 fév 2005 18:33:22"
DDate = CDate(S) + CDate("07:00")
S = Format$(DDate, "dddd dd mmm yyyy hh:mm")
Debug.Print S
'la conversion CDate() n'est pas valide
S = "9 Feb 2005 14:52:40"
S = CvtDate("en-gb", S)
DDate = CDate(S) + CDate("01:00")
S = Format$(DDate, "dddd dd mmm yyyy hh:mm")
Debug.Print S
End Sub
Private Function CvtDate(From As String, S As String) As Date
Dim fNum As Integer
Dim fName As String
Dim objMSHTML As mshtml.HTMLDocument
Dim oDoc As mshtml.HTMLDocument
fNum = FreeFile()
fName = App.Path & "Date.html"
Open fName For Output As #fNum
Print #fNum, "<html>"
Print #fNum, "<Body>"
Print #fNum, "<Script Language=" & Chr$(34) & "vbscript" &
Chr$(34) & ">" Print #fNum, "Dim CurrentLocale"
Print #fNum, "Dim GBDate"
Print #fNum, "Dim Original"
Print #fNum, "CurrentLocale=GetLocale"
Print #fNum, "GBDate=" & Chr$(34) & S & Chr$(34)
Print #fNum, "Original=SetLocale(" & Chr$(34) & From & Chr$(34) &
")" Print #fNum, "MyDateÍate(GBDate)"
Print #fNum, "Original=SetLocale(CurrentLocale)"
Print #fNum, "document.Writeln FormatDateTime(MyDate,
vbGeneralDate)" Print #fNum, "</Script>"
Print #fNum, "</Body>"
Print #fNum, "</html>"
Close #fNum
Set objMSHTML = New mshtml.HTMLDocument
Set oDoc = objMSHTML.createDocumentFromUrl(fName, vbNullString)
While oDoc.readyState <> "complete"
DoEvents
Wend
CvtDate = oDoc.documentElement.innerText
Set oDoc = Nothing
Set objMSHTML = Nothing
Kill fName
End Function
--
Cordialement,
Jacques.
J'ai bien sûr réussi à faire quelque chose avec les moyens du bord,
mais cela n'a rien de très génial.
Je vais bien sûr essayer toutes les solutions que vous avez proposées
et en profiter pour faire connaissance avec Framework dont on parle
tant. (ce qui me rappelle le premier 'intégré' que j'ai utilisé
lorsque j'ai viré de l'Apple II au PC lol ).
Mon but est d'interpréter les dates des messages de fichiers dbx
figurant dans l'entête du 'texte de brute'. En effet, elles ne sont
pas tout à fait les mêmes que celles décodées par l'analyse des
fichiers suivant Aroh (écart d'une minute au moins).
Il semblerait que toutes les dates sont fournies dans le format "Fri,
1 Apr 2005 19:02:05 +0100" et je désire avoir cette date en français
et en tenant compte des décalages (+0100, -0500, -0800, ...). Je n'ai
d'ailleurs pas trouvé de corrélation entre le décalage et cette
notation (d'où le Select Case de mon pôvre code). ;-(
Cordialement
Aski
////////////////////////////////////////////////////////
Private Sub Form_Load()
Dim i As Byte, Shift As Byte
Dim S As String, M As String, DDate As String
S = "Fri, 1 Apr 2005 19:02:05 +0100"
'isoler la date et le décalage
S = Mid$(S, InStr(S, ",") + 2)
'rechercher un décalage éventuel - sous toute réserve
If InStr(S, "+01") Then
Shift = 1
ElseIf InStr(S, "-05") Then Shift = 7
ElseIf InStr(S, "-08") Then Shift = 10
Else: Shift = 0
End If
'isoler la date
S = Trim$(Left$(S, InStrRev(S, ":") + 2))
'rechercher le mois
M = Mid$(S, InStr(S, " ") + 1, 3)
Select Case LCase(M)
Case "feb": S = Replace(S, M, "fév")
Case "apr": S = Replace(S, M, "avr")
Case "may": S = Replace(S, M, "mai")
Case "jun": S = Replace(S, M, "jui")
Case "jul": S = Replace(S, M, "juil")
Case "aug": S = Replace(S, M, "aoû")
Case "dec": S = Replace(S, M, "déc")
End Select
'ajout du décalage après conversion en variable Date
S = DateAdd("h", Shift, CDate(S))
'mise sous format OE
S = Format$(S, "dddd dd mmm yyyy hh:mm")
End Sub
////////////////////////////////////////////////////////////
Bonjour à tous qui m'aidez bien dans ma recherche,
.En folâtrant sur son clavier, Jacques93 s'est exprimé ainsi :Bonsoir Aski,
Aski a écrit :Bonjour,
Je désire convertir une date de la forme "23 fév 2005 18:33:22".
La routine suivante fonctionne correctement.
Par contre, si la chaîne a été inscrite en anglais, la conversion
CDate() n'est pas valide.
J'ai recherché un moyen de modifier la langue pour faire la
conversion et je n'ai trouvé que SetLocaleInfo() qui ne semble pas
adaptée à ce que je désire faire.
Avez-vous une idée géniale ?
Pas géniale, mais amusante : utiliser la fonction SetLocale de
VBScript dans une page HTML.
Voir ici pour d'autre format :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsmsclcid.asp
(Ajouter une référence à Microsoft HTML Object Library : MSHTML.tlb)
====================================================================== >>> Private Sub Command1_Click()
Dim S As String
Dim DDate As String
'fonctionne bien
S = "23 fév 2005 18:33:22"
DDate = CDate(S) + CDate("07:00")
S = Format$(DDate, "dddd dd mmm yyyy hh:mm")
Debug.Print S
'la conversion CDate() n'est pas valide
S = "9 Feb 2005 14:52:40"
S = CvtDate("en-gb", S)
DDate = CDate(S) + CDate("01:00")
S = Format$(DDate, "dddd dd mmm yyyy hh:mm")
Debug.Print S
End Sub
Private Function CvtDate(From As String, S As String) As Date
Dim fNum As Integer
Dim fName As String
Dim objMSHTML As mshtml.HTMLDocument
Dim oDoc As mshtml.HTMLDocument
fNum = FreeFile()
fName = App.Path & "Date.html"
Open fName For Output As #fNum
Print #fNum, "<html>"
Print #fNum, "<Body>"
Print #fNum, "<Script Language=" & Chr$(34) & "vbscript" &
Chr$(34) & ">" Print #fNum, "Dim CurrentLocale"
Print #fNum, "Dim GBDate"
Print #fNum, "Dim Original"
Print #fNum, "CurrentLocale=GetLocale"
Print #fNum, "GBDate=" & Chr$(34) & S & Chr$(34)
Print #fNum, "Original=SetLocale(" & Chr$(34) & From & Chr$(34) &
")" Print #fNum, "MyDateÍate(GBDate)"
Print #fNum, "Original=SetLocale(CurrentLocale)"
Print #fNum, "document.Writeln FormatDateTime(MyDate,
vbGeneralDate)" Print #fNum, "</Script>"
Print #fNum, "</Body>"
Print #fNum, "</html>"
Close #fNum
Set objMSHTML = New mshtml.HTMLDocument
Set oDoc = objMSHTML.createDocumentFromUrl(fName, vbNullString)
While oDoc.readyState <> "complete"
DoEvents
Wend
CvtDate = oDoc.documentElement.innerText
Set oDoc = Nothing
Set objMSHTML = Nothing
Kill fName
End Function
--
Cordialement,
Jacques.
J'ai bien sûr réussi à faire quelque chose avec les moyens du bord,
mais cela n'a rien de très génial.
Je vais bien sûr essayer toutes les solutions que vous avez proposées
et en profiter pour faire connaissance avec Framework dont on parle
tant. (ce qui me rappelle le premier 'intégré' que j'ai utilisé
lorsque j'ai viré de l'Apple II au PC lol ).
Mon but est d'interpréter les dates des messages de fichiers dbx
figurant dans l'entête du 'texte de brute'. En effet, elles ne sont
pas tout à fait les mêmes que celles décodées par l'analyse des
fichiers suivant Aroh (écart d'une minute au moins).
Il semblerait que toutes les dates sont fournies dans le format "Fri,
1 Apr 2005 19:02:05 +0100" et je désire avoir cette date en français
et en tenant compte des décalages (+0100, -0500, -0800, ...). Je n'ai
d'ailleurs pas trouvé de corrélation entre le décalage et cette
notation (d'où le Select Case de mon pôvre code). ;-(
Cordialement
Aski
////////////////////////////////////////////////////////
Private Sub Form_Load()
Dim i As Byte, Shift As Byte
Dim S As String, M As String, DDate As String
S = "Fri, 1 Apr 2005 19:02:05 +0100"
'isoler la date et le décalage
S = Mid$(S, InStr(S, ",") + 2)
'rechercher un décalage éventuel - sous toute réserve
If InStr(S, "+01") Then
Shift = 1
ElseIf InStr(S, "-05") Then Shift = 7
ElseIf InStr(S, "-08") Then Shift = 10
Else: Shift = 0
End If
'isoler la date
S = Trim$(Left$(S, InStrRev(S, ":") + 2))
'rechercher le mois
M = Mid$(S, InStr(S, " ") + 1, 3)
Select Case LCase(M)
Case "feb": S = Replace(S, M, "fév")
Case "apr": S = Replace(S, M, "avr")
Case "may": S = Replace(S, M, "mai")
Case "jun": S = Replace(S, M, "jui")
Case "jul": S = Replace(S, M, "juil")
Case "aug": S = Replace(S, M, "aoû")
Case "dec": S = Replace(S, M, "déc")
End Select
'ajout du décalage après conversion en variable Date
S = DateAdd("h", Shift, CDate(S))
'mise sous format OE
S = Format$(S, "dddd dd mmm yyyy hh:mm")
End Sub
////////////////////////////////////////////////////////////
> Je ne comprends pas pourquoi on pourrait avoir des décalages en minutes
(lorsque les 2 derniers digits sont différents de 0).
> Je ne comprends pas pourquoi on pourrait avoir des décalages en minutes
(lorsque les 2 derniers digits sont différents de 0).
> Je ne comprends pas pourquoi on pourrait avoir des décalages en minutes
(lorsque les 2 derniers digits sont différents de 0).
Bonsoir Fred,
En folâtrant sur son clavier, Fred s'est exprimé ainsi :
|| Dans son message
|| Aski nous dit :
||
||| Bonjour à tous qui m'aidez bien dans ma recherche,
|||
||| J'ai bien sûr réussi à faire quelque chose avec les moyens du bord,
||| mais cela n'a rien de très génial.
||| Je vais bien sûr essayer toutes les solutions que vous avez
||| proposées et en profiter pour faire connaissance avec Framework
||| dont on parle tant. (ce qui me rappelle le premier 'intégré' que
||| j'ai utilisé lorsque j'ai viré de l'Apple II au PC lol ).
|||
||| Mon but est d'interpréter les dates des messages de fichiers dbx
||| figurant dans l'entête du 'texte de brute'. En effet, elles ne sont
||| pas tout à fait les mêmes que celles décodées par l'analyse des
||| fichiers suivant Aroh (écart d'une minute au moins).
||| Il semblerait que toutes les dates sont fournies dans le format
||| "Fri, 1 Apr 2005 19:02:05 +0100" et je désire avoir cette date en
||| français et en tenant compte des décalages (+0100, -0500, -0800,
||| ...). Je n'ai d'ailleurs pas trouvé de corrélation entre le
||| décalage et cette notation (d'où le Select Case de mon pôvre code).
||| ;-(
|||
||| Cordialement
|||
||| Aski
|||
||| ////////////////////////////////////////////////////////
||| Private Sub Form_Load()
||| Dim i As Byte, Shift As Byte
||| Dim S As String, M As String, DDate As String
||| S = "Fri, 1 Apr 2005 19:02:05 +0100"
||| 'isoler la date et le décalage
||| S = Mid$(S, InStr(S, ",") + 2)
||| 'rechercher un décalage éventuel - sous toute réserve
i = InStr(S, "+")
If i = 0 Then i = InStr(S, "-")
If i = 0 Then
Shift = 0
Else: Shift = 2 - Val(Mid$(S, i, 3))
End If
||| 'isoler la date
||| S = Trim$(Left$(S, InStrRev(S, ":") + 2))
||| 'rechercher le mois
||| M = Mid$(S, InStr(S, " ") + 1, 3)
||| Select Case LCase(M)
||| Case "feb": S = Replace(S, M, "fév")
||| Case "apr": S = Replace(S, M, "avr")
||| Case "may": S = Replace(S, M, "mai")
||| Case "jun": S = Replace(S, M, "jui")
||| Case "jul": S = Replace(S, M, "juil")
||| Case "aug": S = Replace(S, M, "aoû")
||| Case "dec": S = Replace(S, M, "déc")
||| End Select
||| 'ajout du décalage après conversion en variable Date
||| S = DateAdd("h", Shift, CDate(S))
||| 'mise sous format OE
||| S = Format$(S, "dddd dd mmm yyyy hh:mm")
||| End Sub
||| ////////////////////////////////////////////////////////////
||
|| Bonsoir,
|| Concernant le format des dates pour les messages internet,
|| extrait de la RFC 822
||
|| date-time = [ day "," ] date time ; dd mm yy
|| ; hh:mm:ss zzz
||
|| day = "Mon" / "Tue" / "Wed" / "Thu"
|| / "Fri" / "Sat" / "Sun"
||
|| date = 1*2DIGIT month 2DIGIT ; day month year
|| ; e.g. 20 Jun 82
||
|| month = "Jan" / "Feb" / "Mar" / "Apr"
|| / "May" / "Jun" / "Jul" / "Aug"
|| / "Sep" / "Oct" / "Nov" / "Dec"
||
|| time = hour zone ; ANSI and Military
||
|| hour = 2DIGIT ":" 2DIGIT [":" 2DIGIT]
|| ; 00:00:00 - 23:59:59
||
|| zone = "UT" / "GMT" ; Universal Time
|| ; North American : UT
|| / "EST" / "EDT" ; Eastern: - 5/ - 4
|| / "CST" / "CDT" ; Central: - 6/ - 5
|| / "MST" / "MDT" ; Mountain: - 7/ - 6
|| / "PST" / "PDT" ; Pacific: - 8/ - 7
|| / 1ALPHA ; Military: Z = UT;
|| ; A:-1; (J not used)
|| ; M:-12; N:+1; Y:+12
|| / ( ("+" / "-") 4DIGIT ) ; Local differential
|| ; hours+min. (HHMM)
||
||
|| Entre-temps, il y a eu modification pour l'année (4 chiffres).
|| Les quatre chiffres donnent le décalage par rapport à Greenwich.
|| Sachant qu'en France on est actuellement à +0200 tu peut calculer
|| ton Shift par une simple soustraction.
|| (Au passage, si les deux derniers chiffres sont souvent à 0, rien
|| n'empêche que ce ne soit pas toujours le cas)
|| --
|| Fred
Merci Fred, voilà une explication claire qui m'enlève une épine du pied.
J'ai modifié le code précédent en conséquence.
Il faut ajouter "CET" +0100 à ta liste.
J'additionnais +01 alors qu'il fallait le soustraire après avoir ajouté
+0200.
Je ne comprends pas pourquoi on pourrait avoir des décalages en minutes
(lorsque les 2 derniers digits sont différents de 0).
Cordialement
Aski
Bonsoir Fred,
En folâtrant sur son clavier, Fred s'est exprimé ainsi :
|| Dans son message ukwUa48WFHA.2448@TK2MSFTNGP12.phx.gbl
|| Aski nous dit :
||
||| Bonjour à tous qui m'aidez bien dans ma recherche,
|||
||| J'ai bien sûr réussi à faire quelque chose avec les moyens du bord,
||| mais cela n'a rien de très génial.
||| Je vais bien sûr essayer toutes les solutions que vous avez
||| proposées et en profiter pour faire connaissance avec Framework
||| dont on parle tant. (ce qui me rappelle le premier 'intégré' que
||| j'ai utilisé lorsque j'ai viré de l'Apple II au PC lol ).
|||
||| Mon but est d'interpréter les dates des messages de fichiers dbx
||| figurant dans l'entête du 'texte de brute'. En effet, elles ne sont
||| pas tout à fait les mêmes que celles décodées par l'analyse des
||| fichiers suivant Aroh (écart d'une minute au moins).
||| Il semblerait que toutes les dates sont fournies dans le format
||| "Fri, 1 Apr 2005 19:02:05 +0100" et je désire avoir cette date en
||| français et en tenant compte des décalages (+0100, -0500, -0800,
||| ...). Je n'ai d'ailleurs pas trouvé de corrélation entre le
||| décalage et cette notation (d'où le Select Case de mon pôvre code).
||| ;-(
|||
||| Cordialement
|||
||| Aski
|||
||| ////////////////////////////////////////////////////////
||| Private Sub Form_Load()
||| Dim i As Byte, Shift As Byte
||| Dim S As String, M As String, DDate As String
||| S = "Fri, 1 Apr 2005 19:02:05 +0100"
||| 'isoler la date et le décalage
||| S = Mid$(S, InStr(S, ",") + 2)
||| 'rechercher un décalage éventuel - sous toute réserve
i = InStr(S, "+")
If i = 0 Then i = InStr(S, "-")
If i = 0 Then
Shift = 0
Else: Shift = 2 - Val(Mid$(S, i, 3))
End If
||| 'isoler la date
||| S = Trim$(Left$(S, InStrRev(S, ":") + 2))
||| 'rechercher le mois
||| M = Mid$(S, InStr(S, " ") + 1, 3)
||| Select Case LCase(M)
||| Case "feb": S = Replace(S, M, "fév")
||| Case "apr": S = Replace(S, M, "avr")
||| Case "may": S = Replace(S, M, "mai")
||| Case "jun": S = Replace(S, M, "jui")
||| Case "jul": S = Replace(S, M, "juil")
||| Case "aug": S = Replace(S, M, "aoû")
||| Case "dec": S = Replace(S, M, "déc")
||| End Select
||| 'ajout du décalage après conversion en variable Date
||| S = DateAdd("h", Shift, CDate(S))
||| 'mise sous format OE
||| S = Format$(S, "dddd dd mmm yyyy hh:mm")
||| End Sub
||| ////////////////////////////////////////////////////////////
||
|| Bonsoir,
|| Concernant le format des dates pour les messages internet,
|| extrait de la RFC 822
||
|| date-time = [ day "," ] date time ; dd mm yy
|| ; hh:mm:ss zzz
||
|| day = "Mon" / "Tue" / "Wed" / "Thu"
|| / "Fri" / "Sat" / "Sun"
||
|| date = 1*2DIGIT month 2DIGIT ; day month year
|| ; e.g. 20 Jun 82
||
|| month = "Jan" / "Feb" / "Mar" / "Apr"
|| / "May" / "Jun" / "Jul" / "Aug"
|| / "Sep" / "Oct" / "Nov" / "Dec"
||
|| time = hour zone ; ANSI and Military
||
|| hour = 2DIGIT ":" 2DIGIT [":" 2DIGIT]
|| ; 00:00:00 - 23:59:59
||
|| zone = "UT" / "GMT" ; Universal Time
|| ; North American : UT
|| / "EST" / "EDT" ; Eastern: - 5/ - 4
|| / "CST" / "CDT" ; Central: - 6/ - 5
|| / "MST" / "MDT" ; Mountain: - 7/ - 6
|| / "PST" / "PDT" ; Pacific: - 8/ - 7
|| / 1ALPHA ; Military: Z = UT;
|| ; A:-1; (J not used)
|| ; M:-12; N:+1; Y:+12
|| / ( ("+" / "-") 4DIGIT ) ; Local differential
|| ; hours+min. (HHMM)
||
||
|| Entre-temps, il y a eu modification pour l'année (4 chiffres).
|| Les quatre chiffres donnent le décalage par rapport à Greenwich.
|| Sachant qu'en France on est actuellement à +0200 tu peut calculer
|| ton Shift par une simple soustraction.
|| (Au passage, si les deux derniers chiffres sont souvent à 0, rien
|| n'empêche que ce ne soit pas toujours le cas)
|| --
|| Fred
Merci Fred, voilà une explication claire qui m'enlève une épine du pied.
J'ai modifié le code précédent en conséquence.
Il faut ajouter "CET" +0100 à ta liste.
J'additionnais +01 alors qu'il fallait le soustraire après avoir ajouté
+0200.
Je ne comprends pas pourquoi on pourrait avoir des décalages en minutes
(lorsque les 2 derniers digits sont différents de 0).
Cordialement
Aski
Bonsoir Fred,
En folâtrant sur son clavier, Fred s'est exprimé ainsi :
|| Dans son message
|| Aski nous dit :
||
||| Bonjour à tous qui m'aidez bien dans ma recherche,
|||
||| J'ai bien sûr réussi à faire quelque chose avec les moyens du bord,
||| mais cela n'a rien de très génial.
||| Je vais bien sûr essayer toutes les solutions que vous avez
||| proposées et en profiter pour faire connaissance avec Framework
||| dont on parle tant. (ce qui me rappelle le premier 'intégré' que
||| j'ai utilisé lorsque j'ai viré de l'Apple II au PC lol ).
|||
||| Mon but est d'interpréter les dates des messages de fichiers dbx
||| figurant dans l'entête du 'texte de brute'. En effet, elles ne sont
||| pas tout à fait les mêmes que celles décodées par l'analyse des
||| fichiers suivant Aroh (écart d'une minute au moins).
||| Il semblerait que toutes les dates sont fournies dans le format
||| "Fri, 1 Apr 2005 19:02:05 +0100" et je désire avoir cette date en
||| français et en tenant compte des décalages (+0100, -0500, -0800,
||| ...). Je n'ai d'ailleurs pas trouvé de corrélation entre le
||| décalage et cette notation (d'où le Select Case de mon pôvre code).
||| ;-(
|||
||| Cordialement
|||
||| Aski
|||
||| ////////////////////////////////////////////////////////
||| Private Sub Form_Load()
||| Dim i As Byte, Shift As Byte
||| Dim S As String, M As String, DDate As String
||| S = "Fri, 1 Apr 2005 19:02:05 +0100"
||| 'isoler la date et le décalage
||| S = Mid$(S, InStr(S, ",") + 2)
||| 'rechercher un décalage éventuel - sous toute réserve
i = InStr(S, "+")
If i = 0 Then i = InStr(S, "-")
If i = 0 Then
Shift = 0
Else: Shift = 2 - Val(Mid$(S, i, 3))
End If
||| 'isoler la date
||| S = Trim$(Left$(S, InStrRev(S, ":") + 2))
||| 'rechercher le mois
||| M = Mid$(S, InStr(S, " ") + 1, 3)
||| Select Case LCase(M)
||| Case "feb": S = Replace(S, M, "fév")
||| Case "apr": S = Replace(S, M, "avr")
||| Case "may": S = Replace(S, M, "mai")
||| Case "jun": S = Replace(S, M, "jui")
||| Case "jul": S = Replace(S, M, "juil")
||| Case "aug": S = Replace(S, M, "aoû")
||| Case "dec": S = Replace(S, M, "déc")
||| End Select
||| 'ajout du décalage après conversion en variable Date
||| S = DateAdd("h", Shift, CDate(S))
||| 'mise sous format OE
||| S = Format$(S, "dddd dd mmm yyyy hh:mm")
||| End Sub
||| ////////////////////////////////////////////////////////////
||
|| Bonsoir,
|| Concernant le format des dates pour les messages internet,
|| extrait de la RFC 822
||
|| date-time = [ day "," ] date time ; dd mm yy
|| ; hh:mm:ss zzz
||
|| day = "Mon" / "Tue" / "Wed" / "Thu"
|| / "Fri" / "Sat" / "Sun"
||
|| date = 1*2DIGIT month 2DIGIT ; day month year
|| ; e.g. 20 Jun 82
||
|| month = "Jan" / "Feb" / "Mar" / "Apr"
|| / "May" / "Jun" / "Jul" / "Aug"
|| / "Sep" / "Oct" / "Nov" / "Dec"
||
|| time = hour zone ; ANSI and Military
||
|| hour = 2DIGIT ":" 2DIGIT [":" 2DIGIT]
|| ; 00:00:00 - 23:59:59
||
|| zone = "UT" / "GMT" ; Universal Time
|| ; North American : UT
|| / "EST" / "EDT" ; Eastern: - 5/ - 4
|| / "CST" / "CDT" ; Central: - 6/ - 5
|| / "MST" / "MDT" ; Mountain: - 7/ - 6
|| / "PST" / "PDT" ; Pacific: - 8/ - 7
|| / 1ALPHA ; Military: Z = UT;
|| ; A:-1; (J not used)
|| ; M:-12; N:+1; Y:+12
|| / ( ("+" / "-") 4DIGIT ) ; Local differential
|| ; hours+min. (HHMM)
||
||
|| Entre-temps, il y a eu modification pour l'année (4 chiffres).
|| Les quatre chiffres donnent le décalage par rapport à Greenwich.
|| Sachant qu'en France on est actuellement à +0200 tu peut calculer
|| ton Shift par une simple soustraction.
|| (Au passage, si les deux derniers chiffres sont souvent à 0, rien
|| n'empêche que ce ne soit pas toujours le cas)
|| --
|| Fred
Merci Fred, voilà une explication claire qui m'enlève une épine du pied.
J'ai modifié le code précédent en conséquence.
Il faut ajouter "CET" +0100 à ta liste.
J'additionnais +01 alors qu'il fallait le soustraire après avoir ajouté
+0200.
Je ne comprends pas pourquoi on pourrait avoir des décalages en minutes
(lorsque les 2 derniers digits sont différents de 0).
Cordialement
Aski