# API

**URL:** <https://forum.xojo.com/t/api/18212>\
**Category:** Français\
**Created:** [July 27, 2014, 10:32pm UTC](https://forum.xojo.com/t/api/18212 "2014-07-27T22:32:34Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Djamel\_AIT\_AMRANE](https://forum.xojo.com/user_avatar/forum.xojo.com/djamel_ait_amrane/32/20260_2.png) [@Djamel\_AIT\_AMRANE](https://forum.xojo.com/u/Djamel_AIT_AMRANE)\
**Post date:** [July 27, 2014, 10:32pm UTC](https://forum.xojo.com/t/api/18212/1 "2014-07-27T22:32:34Z")

</div>

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 ?

---

<div class="post-metadata">

**Author:** ![Djamel\_AIT\_AMRANE](https://forum.xojo.com/user_avatar/forum.xojo.com/djamel_ait_amrane/32/20260_2.png) [@Djamel\_AIT\_AMRANE](https://forum.xojo.com/u/Djamel_AIT_AMRANE)\
**Post date:** [July 28, 2014, 6:09pm UTC](https://forum.xojo.com/t/api/18212/2 "2014-07-28T18:09:04Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![Michel\_Bujardet](https://forum.xojo.com/user_avatar/forum.xojo.com/michel_bujardet/32/252_2.png) [@Michel\_Bujardet](https://forum.xojo.com/u/Michel_Bujardet)\
**Post date:** [July 28, 2014, 8:15pm UTC](https://forum.xojo.com/t/api/18212/3 "2014-07-28T20:15:14Z")

</div>

[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](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.

---

<div class="post-metadata">

**Author:** ![Djamel\_AIT\_AMRANE](https://forum.xojo.com/user_avatar/forum.xojo.com/djamel_ait_amrane/32/20260_2.png) [@Djamel\_AIT\_AMRANE](https://forum.xojo.com/u/Djamel_AIT_AMRANE)\
**Post date:** [July 29, 2014, 7:04am UTC](https://forum.xojo.com/t/api/18212/4 "2014-07-29T07:04:45Z")

</div>

> [@](#):
>
> En gnral les declare Xojo sont extrmement 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](http://msdn.microsoft.com/en-us/library/windows/desktop/ms724390(v=vs.85).aspx) pour voir les paramtres de l’API ; plSystemTime est en fait un pointeur sur la structure SYSTEMTIME. Xojo peut parfaitement passer un pointeur, mais il faudrait connatre l’architecture de la structure passe par VB pour l’muler.

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.

---

<div class="post-metadata">

**Author:** ![system](https://forum.xojo.com/uploads/default/original/1X/455b4dcc0e61630e9f81940004ddffa49c432a46.png) [@system](https://forum.xojo.com/u/system)\
**Post date:** [October 29, 2020, 5:21pm UTC](https://forum.xojo.com/t/api/18212/5 "2020-10-29T17:21:02Z")

</div>


