Voici un module qui permet de gerer les date comme le permet PHP (avec le tampon horaire UNIX). La date est en fait un nombre, le nombre de secondes écoulées depuis le 1/1/1970 à 0:00 (heure greenwich (attention au decalage horaire))
Source / Exemple :
'3 fonctions pour l'instant :
GMT_Time() 'retourne le tampon horaire UNIX courant
GMT_In(Date) 'retourne le tampon horaire UNIX de la date passée en parametre
GMT_Out(Format, TimeStamp) 'Retourne une string de la date correspondant au tampon horaire du 2nd parametre.
'Format permet de formater la sortie.
Private Declare Sub GetSystemTime Lib "kernel32" (lpSystemTime As HeureSyst)
Private Type HeureSyst
GMTAnnee As Integer
GMTMois As Integer
GMTJourSemaine As Integer
GMTJour As Integer
GMTHeure As Integer
GMTMinute As Integer
GMTSeconde As Integer
GMTMillisecondes As Integer
End Type
Private Function GetGMT() As String
Dim sysTime As HeureSyst
Call GetSystemTime(sysTime)
a = sysTime.GMTHeure & ":" & sysTime.GMTMinute & ":" & sysTime.GMTSeconde
b = CDate(Time) - CDate(a)
GetGMT = b * 24 '(Utilse si vous voulez obtenir le décalage en heure ex: +2,5 (heures))
End Function
Public Function GMT_Time()
GMT_Time = DateDiff("s", DateAdd("s", GetGMT * 3600, "1/1/1970 0:0:0"), Now)
End Function
Public Function GMT_In(PDate As Date)
GMT_In = DateDiff("s", DateAdd("s", GetGMT * 3600, "1/1/1970 0:0:0"), PDate)
End Function
Public Function GMT_Out(FormatDate As String, TimeStamp As Long) As String
Dim Temp As Date
Temp = DateAdd("s", TimeStamp, DateAdd("s", GetGMT * 3600, "1/1/1970 0:0:0"))
GMT_Out = Format(DateAdd("s", TimeStamp, DateAdd("s", GetGMT * 3600, "1/1/1970 0:0:0")), FormatDate)
End Function
Conclusion :
Ouvert à toutes propositions d'améliorations et d'ajout de fonctions.