Petite classe VFP pour manipulation des SYSTEMTIME de l'API windows en datetime VFP.
Source / Exemple :
m.lcSt=CREATEOBJECT("SystemTime")
m.lcSt.GetUTC()
m.tUTC = m.lcSt.DateTime()
m.lcSt.GetLocal()
m.tLocal = m.lcSt.DateTime()
? m.tLocal-m.tUtc, "secondes d'écart entre UTC et Local"
? (m.tLocal-m.tUtc)/60, "minutes"
? (m.tLocal-m.tUtc)/3600, "heures"
DEFINE CLASS SystemTime as custom
- SYSTEMTIME est composé de 8 WORD (soient 16 octets)
#define SizeOfSystemTime 8*2
cYear=SPACE(2)
cMonth=SPACE(2)
cDayOfWeek=SPACE(2)
cDay=SPACE(2)
cHour=SPACE(2)
cMinute=SPACE(2)
cSecond=SPACE(2)
cMilliSec=SPACE(2)
nYear=0
nMonth=0
nDayOfWeek=0
nDay=0
nHour=0
nMinute=0
nSecond=0
nMilliSec=0
tLocalDateTime=DATETIME()
tUTCDateTime=DATETIME()
FUNCTION Init
ENDFUNC
FUNCTION cYear_assign
LPARAMETERS lcNewVal
this.cYear=lcNewVal
this.nYear=this.strToWord(lcNewVal)
ENDFUNC
FUNCTION cMonth_assign
LPARAMETERS lcNewVal
this.cMonth=lcNewVal
this.nMonth=this.strToWord(lcNewVal)
ENDFUNC
FUNCTION cDayOfWeek_assign
LPARAMETERS lcNewVal
this.cDayOfWeek=lcNewVal
this.nDayOfWeek=this.strToWord(lcNewVal)
ENDFUNC
FUNCTION cDay_assign
LPARAMETERS lcNewVal
this.cDay=lcNewVal
this.nDay=this.strToWord(lcNewVal)
ENDFUNC
FUNCTION cHour_assign
LPARAMETERS lcNewVal
this.cHour=lcNewVal
this.nHour=this.strToWord(lcNewVal)
ENDFUNC
FUNCTION cMinute_assign
LPARAMETERS lcNewVal
this.cDayOfWeek=lcNewVal
this.nDayOfWeek=this.strToWord(lcNewVal)
ENDFUNC
FUNCTION cSecond_assign
LPARAMETERS lcNewVal
this.cSecond=lcNewVal
this.nSecond=this.strToWord(lcNewVal)
ENDFUNC
FUNCTION cMilliSec_assign
LPARAMETERS lcNewVal
this.cMilliSec=lcNewVal
this.nMilliSec=this.strToWord(lcNewVal)
ENDFUNC
FUNCTION strToWord
LPARAMETERS lcVal
return ASC(LEFT(lcVal,1))+256*ASC(RIGHT(lcVal,1))
ENDFUNC
FUNCTION Destroy
CLEAR DLLS "GetLocalTime","GetSystemTime"
ENDFUNC
PROCEDURE GetUTC
LOCAL lcBuff
lcBuff=REPLICATE(CHR(32), SizeOfSystemTime)
DECLARE GetSystemTime IN WIN32API String@ pST
GetSystemTime(@lcbuff)
this.cYear=SUBSTR(lcBuff,1,2)
this.cMonth=SUBSTR(lcBuff,3,2)
this.cDayOfWeek=SUBSTR(lcBuff,5,2)
this.cDay=SUBSTR(lcBuff,7,2)
this.cHour=SUBSTR(lcBuff,9,2)
this.cMinute=SUBSTR(lcBuff,11,2)
this.cSecond=SUBSTR(lcBuff,13,2)
this.cMilliSec=SUBSTR(lcBuff,15,2)
ENDPROC
PROCEDURE GetLocal
LOCAL lcBuff
DECLARE GetLocalTime IN WIN32API String@ pST
lcBuff=REPLICATE(CHR(32), SizeOfSystemTime)
GetLocalTime(@lcbuff)
this.cYear=SUBSTR(lcBuff,1,2)
this.cMonth=SUBSTR(lcBuff,3,2)
this.cDayOfWeek=SUBSTR(lcBuff,5,2)
this.cDay=SUBSTR(lcBuff,7,2)
this.cHour=SUBSTR(lcBuff,9,2)
this.cMinute=SUBSTR(lcBuff,11,2)
this.cSecond=SUBSTR(lcBuff,13,2)
this.cMilliSec=SUBSTR(lcBuff,15,2)
ENDPROC
FUNCTION DateTime
WITH this
RETURN DATETIME(.nYear, .nMonth, .nDay, .nHour, .nMinute, .nSecond)
ENDWITH
ENDFUNC
ENDDEFINE
Conclusion :
vfp6 à 9
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.