API

Bonjour,
sous vb6, j’utilisais les API specifiques a la gestion du temps systeme , localtime, UTCTime, etc…
pour cela diverses api sont disponibles:
Public Declare Sub GetSystemTime Lib “kernel32” (lpSystemTime As SYSTEMTIME)
Public Declare Sub GetLocalTime Lib “kernel32” (lpSystemTime As SYSTEMTIME)
Public Declare Function FileTimeToLocalFileTime Lib “kernel32” (lpFileTime As FILETIME, lpLocalFileTime As FILETIME) As Long
Public Declare Function GetTimeZoneInformation Lib “kernel32” (lpTimeZoneInformation As TIME_ZONE_INFORMATION) As Long

Exemple:

[code]Public Function UTCtoLocal(ByVal tDate As Date) As Date
Dim tzi As TIME_ZONE_INFORMATION
Dim stUTC As SYSTEMTIME
Dim stLocal As SYSTEMTIME
Dim lRes As Long

lRes = GetTimeZoneInformation(tzi)
stUTC.wYear = Year(tDate)
stUTC.wMonth = month(tDate)
stUTC.wDay = day(tDate)
stUTC.wHour = hour(tDate)
stUTC.wMinute = Minute(tDate)
stUTC.wSecond = Second(tDate)
stUTC.wMilliseconds = 0
lRes = SystemTimeToTzSpecificLocalTime(tzi, stUTC, stLocal)
UTCtoLocal = DateSerial(stLocal.wYear, stLocal.wMonth, stLocal.wDay) + TimeSerial(stLocal.wHour, stLocal.wMinute, stLocal.wSecond)

End Function[/code]

qu"en est il de Xojo ?

Bonjour,
J’ai dcouvert OffSetGMT, mon souci tait de passer du temps machine au temps UTC selon le fuseau horaire du logiciel sans l’obliger
de changer le fuseau dans l’OS.
OffSetGMT me parait, a priori un moyen d’escamoter les api utilises en Vb6 pour la conversion Local-UTC.

[quote=115495:@Djamel AIT AMRANE]Public Declare Sub GetSystemTime Lib “kernel32” (lpSystemTime As SYSTEMTIME)
Public Declare Sub GetLocalTime Lib “kernel32” (lpSystemTime As SYSTEMTIME)
Public Declare Function FileTimeToLocalFileTime Lib “kernel32” (lpFileTime As FILETIME, lpLocalFileTime As FILETIME) As Long
Public Declare Function GetTimeZoneInformation Lib “kernel32” (lpTimeZoneInformation As TIME_ZONE_INFORMATION) As Long[/quote]

En général les declare Xojo sont extrêmement proches de ceux de VB6. Le type Long de VB6 est l’integer de Xojo. En revanche, je reviens de regarder à http://msdn.microsoft.com/en-us/library/windows/desktop/ms724390(v=vs.85).aspx pour voir les paramètres de l’API ; plSystemTime est en fait un pointeur sur la structure SYSTEMTIME. Xojo peut parfaitement passer un pointeur, mais il faudrait connaître l’architecture de la structure passée par VB pour l’émuler.

Cela ne semble pas impossible, mais signifie probablement utiliser VB pour examiner la manière dont SYSTEMTIME est représenté en mémoire afin de faire la même chose en Xojo.

En VB6, j’ai utilis un tas d’ API pour certaines taches, pour la gestion de l’heure OffsetGMT est suffisant pour passer du temps machine a un fuseau quelconque.
l’API systemtime a l’air de fonctionner en dclarant le mme structure que Vb, et la fonction as Int32.