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