Page 1 sur 1

calcul durée de fonctionnement (sysuptime)

Publié : ven. 01/févr./2013 22:33
par Golfy
Bonsoir,

j'ai un programme qui plante au bout de 22j environ (je suis en train de tester mais c'est long :) ).
J'ai un calcul pour connaître le UPTIME mais je voulait valider avec vous s'il n'y a pas d'autres solutions plus élégantes.

Mon objectif est un affichage de la forme (en anglais) : 2y 11m 30j and 05h36

Voici mon code actuel (que je compile en 32 bits don un integer = 4 oct)

Code : Tout sélectionner

Procedure DisplayUptime()
  utime.q = Date()-uptime
	yt = utime/31536000
	mt = (utime-31536000*yt)/2635200
	dt = (utime-2635200*mt)/86400
	a$="UpTime : "+Str(yt)+"y "+Str(mt)+"m "+Str(dt)+"d and "+FormatDate("%hh:%ii:%ss",utime)
	StatusBarText(#StatusBar_0, 0, a$)
	StatusBarText(#StatusBar_0, 5, FormatDate("%hh:%ii:%ss",Date()))
EndProcedure
Qu'en pensez-vous ?

Re: calcul durée de fonctionnement (sysuptime)

Publié : sam. 02/févr./2013 0:33
par graph100
J'en pense que je ne comprend pas très bien ta gestion des mois et des jours...

moi je ferais comme suis :

Code : Tout sélectionner

Procedure DisplayUptime(uptime.q)
	utime.q = Date()-uptime
	yt = utime/31536000
	mt = (utime-31536000*yt)/2635200
	dt = (utime-2635200*mt)/86400
	a$="UpTime : "+Str(yt)+"y "+Str(mt)+"m "+Str(dt)+"d and "+FormatDate("%hh:%ii:%ss",utime)
	
	Debug a$
EndProcedure

Procedure DisplayUptime_mod(uptime.q)
	utime.q = Date()-uptime
	yt = Int(utime / (365*24*3600))
	mt = Int(((utime / 24 / 3600)  - yt * 365) / 30)
	dt = Int((utime / 24 / 3600)  - yt * 365 - mt * 30)
	
	a$="UpTime : "+Str(yt)+"y "+Str(mt)+"m "+Str(dt)+"d and "+FormatDate("%hh:%ii:%ss",utime)
	
	Debug a$
EndProcedure


DisplayUptime_mod(Date() - 46526223)
DisplayUptime_mod(Date() - 46526223 - 6 * 24 * 3600)
DisplayUptime_mod(Date() - 46526223 - 7 * 24 * 3600)
DisplayUptime_mod(Date() - 46526223 - 8 * 24 * 3600)
DisplayUptime_mod(Date() - 46526223 - 9 * 24 * 3600)

Debug "____"

DisplayUptime(Date() - 46526223)
DisplayUptime(Date() - 46526223 - 8 * 24 * 3600)
DisplayUptime(Date() - 46526223 - 9 * 24 * 3600)

OpenWindow(0, 0, 0, 0, 0, "")
avec des mois de 30jours fixes, et des années de 365jours fixes.

(l'openwindow en bas ne sert que pour éviter le faux-positif par avast :roll: )