L'auteur
Francis Faure France Membre Actif (personne physique) # 0000000001 enregistré le 11/10/2004
http://www.wanagain.net 56 ans Faure Francis de la société Design Or Decline Fiche personnelle
Note des membres
pas de note
|
Contributions > 05 - API et appels systèmes
Récupérer des informations régionales de date (décalage horaire par exemple)
# 0000000514
ajouté le 19/03/2008 19:44:50 et modifié le 19/03/2008
consulté 7437 fois
Niveau
débutant
|
Description |
Après avoir travaillé au moyen de l'article de Frédéric : http://www.atoutfox.org/articles.asp?ACTION=FCONSULTER&ID=0000000476 Sur : GetTimeZoneInformation j'ai réalisé une fonction similaire, mais sous une autre écriture. |
Code source : |
? GetEcartGMT()
* 19 Mars 2008 : GetTimeZoneInformation
* http://msdn2.microsoft.com/en-us/library/ms724421(VS.85).aspx
* Merci Fédéric
*typedef struct _TIME_ZONE_INFORMATION { // tzi
* LONG Bias; 4
* WCHAR StandardName[ 32 ]; 64 (unicode sinon 32)
* SYSTEMTIME StandardDate; SizeOfSystemTime 16
* LONG StandardBias; 4
* WCHAR DaylightName[ 32 ]; 64 (unicode sinon 32)
* SYSTEMTIME DaylightDate; SizeOfSystemTime 16
* LONG DaylightBias; 4
*} TIME_ZONE_INFORMATION
#DEFINE TIME_ZONE_ID_UNKNOWN 0
#DEFINE TIME_ZONE_ID_STANDARD 1
#DEFINE TIME_ZONE_ID_DAYLIGHT 2
FUNCTION GetEcartGMT as String
LOCAL lcReturn as String
LOCAL liRetCode as Integer, TZInfo as String, liEcartGMT as Integer
LOCAL liHours as Integer, liMinutes as Integer
TZInfo = SPACE(172)
DECLARE INTEGER GetTimeZoneInformation IN kernel32 STRING @TZInfo
liRetCode = GetTimeZoneInformation(@TZInfo)
CLEAR DLLS GetTimeZoneInformation
DO case
CASE m.liRetCode=TIME_ZONE_ID_UNKNOWN OR m.liRetCode=TIME_ZONE_ID_STANDARD
liEcartGMT = -buf2dword(SUBSTR(m.TZInfo, 1, 4))
CASE m.liRetCode = TIME_ZONE_ID_DAYLIGHT
liEcartGMT = -(buf2dword(SUBSTR(m.TZInfo, 1, 4)) + buf2dword(SUBSTR(m.TZInfo, 169, 4)))
ENDCASE
lcReturn = IIF(m.liEcartGMT>=0, "+","-")
liHours = INT(ABS(m.liEcartGMT)/60)
liMinutes = ABS(m.liEcartGMT) - 60*m.lihours
lcReturn = lcReturn + PADL(ALLTRIM(STR(m.liHours)),2,"0") + PADL(ALLTRIM(STR(m.liMinutes)),2,"0")
RETURN lcReturn
FUNCTION buf2dword(lcBuffer)
RETURN Asc(SUBSTR(m.lcBuffer, 1,1)) + ;
BitLShift(Asc(SUBSTR(m.lcBuffer, 2,1)), 8) +;
BitLShift(Asc(SUBSTR(m.lcBuffer, 3,1)), 16) +;
BitLShift(Asc(SUBSTR(m.lcBuffer, 4,1)), 24)
|
Commentaires |
Aucun commentaire enregistré ...
|