Page 1 sur 1

Convertir une heure format décimal en format 60 minutes

Posté : 26 avr. 2008, 10:46
par Neutre
Bonjour,

Je voudrai afficher l'heure "vraie" par rapport au soleil. Je crois que je m'en suis tiré mais je ne sais pas repasser de l'heure que j'ai calculé en calculée en décimale à l'heure en format sexagésimal.

Ai-je loupé le bon tag ?

Jean

Posté : 26 avr. 2008, 11:59
par chriss
Qu'entends-tu par heure "vraie" ? Il existe peut-être un tag tout fait pour cette heure.
Mais sinon voici le tag de conversion:
%ws_setmem[3]=heure-décimale%
%ws_setmem[4]=%ws_cutstr=0~3~%ws_getmem[3]%%%
%ws_setmem[5]=%ws_calc[-]=%ws_getmem[3]%~%ws_getmem[4]%~2%%
%ws_setmem[6]=%ws_calc[*]=%ws_getmem[5]%~60~0%%
%ws_setmem[11]=%ws_compare[5]=%ws_getmem[6]%~10~0%ws_getmem[6]%~%ws_getmem[6]%%%
%ws_setmem[13]=%ws_getmem[4]%:%ws_getmem[11]%%

Posté : 26 avr. 2008, 13:59
par Neutre
L'idée est donner l'heure qu''il serait si midi était l'heure au moment où le soleil est exactement à son zénith. Par exemple pour Paris, le zénith du soleil est à 13h48. Donc à 13h48, il est exactement midi à l'heure du soleil. A 14h, il serait 12h12.....

Je ne sais pas si je suis très clair !

Jean

Posté : 26 avr. 2008, 14:47
par Neutre
Merci Chriss !
Le tag fonctionne. Juste un problème que je n'arrive pas à éliminer : une virgule apparait après le nombre de l'heure (ex : 13,:42)

Le code est le suivant :

%unit_off%
%ws_setmem[1]=%ws_timetoval[%ws_time%]%%
%ws_setmem[2]=%ws_timetoval[%ws_suntransit%]%%
%ws_setmem[3]=%ws_calc[-]=12~%ws_getmem[2]%~3%%
%ws_setmem[4]=%ws_calc[+]=%ws_getmem[1]%~%ws_getmem[3]%~3%%

%ws_setmem[5]=%ws_getmem[4]%%
%ws_setmem[6]=%ws_cutstr=0~3~%ws_getmem[5]%%%
%ws_setmem[7]=%ws_calc[-]=%ws_getmem[5]%~%ws_getmem[6]%~2%%
%ws_setmem[8]=%ws_calc[*]=%ws_getmem[7]%~60~0%%
%ws_setmem[9]=%ws_compare[5]=%ws_getmem[8]%~10~0%ws_getmem[8]%~%ws_getmem[8]%%%
%ws_setmem[10]=%ws_getmem[6]%:%ws_getmem[9]%%
%unit_on%

Et je n'arrive pas à voir où j'ai fait l'erreur ! Votre œil exercé voit-il quelque chose ?

Jean,

Posté : 26 avr. 2008, 18:05
par chriss
%ws_setmem[6]=%ws_cutstr=0~3~%ws_getmem[5]%%%
à remplaçer par
%ws_setmem[6]=%ws_cutstr=0~4~%ws_getmem[5]%%%

Posté : 26 avr. 2008, 18:25
par Neutre
Merci Chriss,
Le tag fonctionne désormais parfaitement comme on peut le voir sur mon site. Je vais essayer de décortiquer le code pour mieux le comprendre.
Jean

Posté : 26 avr. 2008, 18:35
par chriss
Je vais t'expliquer:

%ws_setmem[5]=%ws_getmem[4]%%
%ws_setmem[6]=%ws_cutstr=0~3~%ws_getmem[5]%%% // on récupère que l'heure sans les décimales

%ws_setmem[7]=%ws_calc[-]=%ws_getmem[5]%~%ws_getmem[6]%~2%% // on soustrait cette heure à l'heure décimale pour obtneir les minutes.

%ws_setmem[8]=%ws_calc[*]=%ws_getmem[7]%~60~0%% // on convertit ces minutes en minutes conventionnelles (base 60) par une simple multiplication par 60

%ws_setmem[9]=%ws_compare[5]=%ws_getmem[8]%~10~0%ws_getmem[8]%~%ws_getmem[8]%%% //Si ces minutes sont inf. à 10 on ajoute le 0 devant (convention d'écriture) pour donner par exemple 15:05 au lieu de 15:5

%ws_setmem[10]=%ws_getmem[6]%:%ws_getmem[9]%% // on récupère l'ensemble

Posté : 26 avr. 2008, 19:35
par Neutre
C'est clair. C'est beau la pédagogie !
Si j'ai bien compris, j'aurai pu aussi faire l'économie de la première ligne :

%ws_setmem[5]=%ws_getmem[4]%%

Allez, je m'attaque à la durée du jour et à l'ensoleillement

Jean

Posté : 26 avr. 2008, 19:37
par chriss
Exact !!
mais en remplacant:
%ws_setmem[6]=%ws_cutstr=0~4~%ws_getmem[5]%%%
par
%ws_setmem[6]=%ws_cutstr=0~4~%ws_getmem[4]%%%