jjacques68 Posté(e) le 4 mai 2016 Signaler Posté(e) le 4 mai 2016 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
jojo Posté(e) le 4 mai 2016 Signaler Posté(e) le 4 mai 2016 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
jjacques68 Posté(e) le 4 mai 2016 Auteur Signaler Posté(e) le 4 mai 2016 nan nan j'ai bien une valeur "20:48"
jjacques68 Posté(e) le 4 mai 2016 Auteur Signaler Posté(e) le 4 mai 2016 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 !
Berale64 Posté(e) le 4 mai 2016 Signaler Posté(e) le 4 mai 2016 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 1
jjacques68 Posté(e) le 4 mai 2016 Auteur Signaler Posté(e) le 4 mai 2016 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) ??
jjacques68 Posté(e) le 4 mai 2016 Auteur Signaler Posté(e) le 4 mai 2016 Pourquoi les 2 underscore àla ligne 5 et 7 ?
Berale64 Posté(e) le 4 mai 2016 Signaler Posté(e) le 4 mai 2016 Ce sont des valeurs retournées par la fonction string.find mais dont on n'a pas besoin.
jjacques68 Posté(e) le 4 mai 2016 Auteur Signaler Posté(e) le 4 mai 2016 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...
jojo Posté(e) le 4 mai 2016 Signaler Posté(e) le 4 mai 2016 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
jjacques68 Posté(e) le 4 mai 2016 Auteur Signaler Posté(e) le 4 mai 2016 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...
jojo Posté(e) le 4 mai 2016 Signaler Posté(e) le 4 mai 2016 oui, mais je crois que Berale24 t'a trouvé la solution entre temps
jjacques68 Posté(e) le 4 mai 2016 Auteur Signaler Posté(e) le 4 mai 2016 Oui oui, je l'ai déjàadapté dans ma scène, normalement c'est bon, je verrai ça demain. En tout cas merci les gars !!
Berale64 Posté(e) le 5 mai 2016 Signaler Posté(e) le 5 mai 2016 Il y a une erreur. Il faut les heures et les minutes sur deux positions. time = string.format("%02d",h)..":"..string.format("%02d",m);
jjacques68 Posté(e) le 5 mai 2016 Auteur Signaler Posté(e) le 5 mai 2016 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...
jjacques68 Posté(e) le 5 mai 2016 Auteur Signaler Posté(e) le 5 mai 2016 ha oui ça allège tout de suite mon code !! merci !! par contre pour déchiffer la syntaxe... pfffffiou !!
Berale64 Posté(e) le 5 mai 2016 Signaler Posté(e) le 5 mai 2016 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.
mprinfo Posté(e) le 8 mai 2016 Signaler Posté(e) le 8 mai 2016 on peut aussi utilisé une commande lua local difheure = os.difftime(heure2, heure1)
jjacques68 Posté(e) le 8 mai 2016 Auteur Signaler Posté(e) le 8 mai 2016 y a la même chose pour additionner ? genre addtime ?
Messages recommandés