Transformation de date pour certains applicatifs

Transformation de date pour certains applicatifs

Messagepar oguruma » 04 Nov 2009 à 14:32

certains applicatifs traitent les dates de cette manière
comment par exemple tranformer une date dans le format
2009-10-21T10:54:27.984+02:00
(c'est un peu une forme détournée de la rfc 2445)
puisqu'il y a un sujet sur les dates dans le forum dév... voici ce que j'ai été amené à faire dans une de mes applications et comme je n'ai pas pondu de code dans le forum depuis quelques temps c'est donc l'occasion

Code : Tout sélectionner
Function f_DateToZString (hDate As NotesDateTime) As String
   
   Dim sTmp As String
   Dim lngDiff As Long   
   Dim hDTZ As NotesDateTime
   Dim iHeures As Integer
   Dim vDateValue As Variant
   Dim vTimeValue As Variant
   Dim sSigne As String
   
   
   Set hDTZ = New NotesDateTime(hDate.LSGMTTime)
   lngDiff = hDate.TimeDifference(hDTZ)   
   If lngDiff > 0 Then
      sSigne="+"
   Else
      sSigne="-"
   End If
   iHeures=Int(lngDiff/3600)
   
   vDateValue=Datevalue(hDate.LSLocalTime)
   vTimeValue=Timevalue(hDate.LSLocalTime)
   
   ' Exemple de format
   ' 2009-10-21T10:54:27.984+02:00
   
   'ANNEE
   sTmp$ = Cstr(Year(vDateValue)) & "-"
   'MOIS
   sTmp = sTmp & f_Digits(2, Month(vDateValue)) & "-"
   'JOUR
   sTmp = sTmp & f_Digits(2, Day(vDateValue))
   'HEURES
   sTmp = sTmp & "T" & f_Digits(2, Hour(vTimeValue)) & ":"
   'MINUTES
   sTmp = sTmp & f_Digits(2, Minute(vTimeValue)) & ":"
   'SECONDES
   sTmp = sTmp & f_Digits(2, Second(vTimeValue)) & ".000" & sSigne & f_Digits(2, iHeures) & ":00"
   
   f_DateToZString = sTmp
   
End Function

Function f_Digits (Qty As Integer, Txt As Variant) As String
   Dim Buff As String
   Buff = String$(Qty, 48)
   f_Digits = Right(Buff & Val(Txt), Qty)
End Function


exemple :
les 100ème de seconde seront tjrs à 000 pour simplifier les choses
Code : Tout sélectionner
Sub Initialize
   Dim hNDT As NotesDateTime
   
   Set hNDT = New NotesDateTime(Now)
   Msgbox f_DateToZString(hNDT)
   
   ' Exemple de format
   ' 2009-10-21T10:54:27.984+02:00
   Set hNDT = New NotesDateTime("21/10/2009 10:54:27")
   Msgbox f_DateToZString(hNDT)
   
End Sub
Bien à vous

http://www.dominoarea.org/oguruma/

Les téléphones PORTABLES dans les TGV y en a MARRRE de ces voyageurs qui ne respectent pas les autres ! ARRET DES PORTABLES SVP - Merci

Fumeurs ! respectez les non fumeurs !!!
Fumeurs ! respectez la loi de février 2007 et les lieux publics !!! (ie. hall de gares)
Avatar de l’utilisateur
oguruma
Super V.I.P.
Super V.I.P.
 
Message(s) : 4086
Inscrit(e) le : 16 Déc 2004 à 08:50
Localisation : LILLE

Retour vers Date