Aller au contenu

Messages recommandés

Posté(e)

Bonjour àtous,

Quelqu'un peut m'indiquer la syntaxe pour soustraire des heures ?

ce que je souhaite c'est prendre l'heure du couché de soleil et l'avancer de 45 min donc - 45 min.

j'essaye avec ceci, mais il me retourne un problème de type :

MaVariable = fibaro:getValue(1, "sunsetHour") - "00:45"
pourtant je travaille bien avec que des string ?

Merci pour votre aide !!!

Cordialement,

JJacques68

Posté(e)

affiche la valeur de sunsethour dans un debug.

Je suis quasiment sûr q'il va te retourner un nombre unix (# nombre de secondes depuis le 1/1/1970).

ensuite tu retranche 45 min = 45*60 = 2700

Posté(e)

Mais c'est un truc de dingue !!!!

Je trouve nul part de la doc meme pas en englais pour faire des soustractions d'heure !!!!

Et faire une convention de la chaîne avec tonumber ne fonctionne pas non plus !

Posté(e)

Oui, tu travailles bien avec des strings et le système ne sait pas si ce sont des choux ou des carottes.

Il va falloir écrire quelques lignes de code.

t = "10:40"
s = "01:25"
 
_, _, h1, m1 = string.find(t, "(%d+)%d+)")
 
_, _, h2, m2 = string.find(s, "(%d+)%d+)")
    
h = h1+h2
m = m1+m2
if m > 60 then
  h = h +1
  m = m-60
end

time = h..":"..m
  • Upvote 1
Posté(e)

Pourquoi faire simple quand on peut faire compliquer... :)

Donc si j'ai bien compris, tu extrais les heures et minutes dans des variables distinctes.

Tu fais ton calcul, et tu recrées une chaîne de caractères.

Il ne faut pas utiliser àla fin : Time = tostring(h..":"..m) ??

Posté(e)

Ok j'ai bien compris.

(en m'aidant également de lua.org ;))

 

Merci beaucoup pour ton aide !!

 

Mais quand même, ils auraient pu inventer une fonction toute faite...

Posté(e)

moi j'utilise un code tout simple :

num_day = 14

local Arrosage = {}
Arrosage.Last = os.time()
Arrosage.Next = Arrosage.Last + (num_day*24*60*60)

qui détermine Anorosage.Next à14 jours après Arrosage.Last

Posté(e)

oui mais jojo,  os.time renvois une date format unix comme tu disais !!

 

et sunsetHour renvois une chaine !!

 

et donc ça marche pas...

 

enfin si j'ai tout bien compris... :)

Posté(e)

Il y a une erreur. Il faut les heures et les minutes sur deux positions.

time = string.format("%02d",h)..":"..string.format("%02d",m);
Posté(e)

cet ajout permet d'avoir un affichage de type "08:05" au lieu de "8:5" ??

 

Parce que j'ai régler le problème mais avec beaucoup de ligne de code...

Posté(e)

La connaissance de langages comme le "C" est un plus non négligeable. ;)

 

"d" signifie un nombre entier, le 2 sur 2 positions et on complète par des zéros si nécessaire.

×
×
  • Créer...