Page 1 sur 1
comment faire un decalage horaire
Publié : lun. 22/août/2005 8:53
par scaraber
salut je sui sactuellemnt en train de faire une horlogemultifonction ( je la passerai iune fois fini ) j'ai bien avancer maisil me reste a faire un decalage horaire si quelqun savait coment faire ...
Publié : lun. 22/août/2005 9:01
par lionel_om
AddDate() ???
Publié : lun. 22/août/2005 19:06
par fweil
@scaraber,
Il faut en premier tout gérer en interne en temps UTC, ou GMT, et disposer d'une table des décalages en fonction de la zone horaire.
Pour démarrer, voici un bout de code avec les API (valable sous Windows NT / XP), qui permet de synchroniser le temps système du poste de travail, de récupérer le temps UTC et le temps local, ainsi que les informations de zone locale.
A noter que la fonction OS net time est un joli raccourci pour accéder à la synchro ntp. Avant il fallait se taper l'appel au serveur et la négociation pour obtenir la synchro.
Code : Tout sélectionner
Procedure.s Format_Internal_Time(Address.l, Separator.s)
*Time.SYSTEMTIME = Address
Debug "Address = " + Str(Address)
Result.s = ""
sDayOfWeek.s = "Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday"
Result.s = "Year : " + Str(*Time\wYear) + Separator
Result + "Month : " + Str(*Time\wMonth) + Separator
Result + "Day of week : " + StringField(sDayOfWeek, *Time\wDayOfWeek + 1, ",") + Separator
Result + "Day : " + Str(*Time\wDay) + Separator
Result + "Hour : " + Str(*Time\wHour) + Separator
Result + "Minute : " + Str(*Time\wMinute) + Separator
Result + "Second : " + Str(*Time\wSecond) + Separator
Result + "Millisecond : " + Str(*Time\wMilliseconds)
ProcedureReturn Result
EndProcedure
;
; sntp NT / XP synchro
;
RunProgram("net", "time /setsntp:pool.ntp.org", "", 1 | 2)
;
; Here you get system tme (UTC time)
;
GetSystemTime_(SystemTime.SYSTEMTIME)
sST.s = Format_Internal_Time(SystemTime, Chr(10))
;
; Here you get local time
;
GetLocalTime_(Local.SYSTEMTIME)
sLT.s = Format_Internal_Time(Local, Chr(10))
;
; Here you get the local time time zone name
;
GetTimeZoneInformation_(TimeZoneInfo.TIME_ZONE_INFORMATION)
sStandardName.s = ""
i = 0
While TimeZoneInfo\StandardName[i] <>0 And i <= 32
sStandardName + Chr(TimeZoneInfo\StandardName[i])
i + 1
Wend
sInfo.s = "Time zone : " + sStandardName + Chr(10)
sInfo + "UTC + " + Str(TimeZoneInfo\DaylightDate\wHour)
MessageRequester("Time information : ", sST + Chr(10) + Chr(10) + sLT + Chr(10) + Chr(10) + sInfo, #PB_MessageRequester_Ok)
End