jjacques68 Posté(e) le 4 mai 2016 Signaler Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 4 mai 2016 Signaler Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
jjacques68 Posté(e) le 4 mai 2016 Auteur Signaler Partager Posté(e) le 4 mai 2016 nan nan j'ai bien une valeur "20:48" Lien vers le commentaire Partager sur d’autres sites More sharing options...
jjacques68 Posté(e) le 4 mai 2016 Auteur Signaler Partager 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 ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Berale64 Posté(e) le 4 mai 2016 Signaler Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
jjacques68 Posté(e) le 4 mai 2016 Auteur Signaler Partager 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) ?? Lien vers le commentaire Partager sur d’autres sites More sharing options...
jjacques68 Posté(e) le 4 mai 2016 Auteur Signaler Partager Posté(e) le 4 mai 2016 Pourquoi les 2 underscore àla ligne 5 et 7 ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Berale64 Posté(e) le 4 mai 2016 Signaler Partager Posté(e) le 4 mai 2016 Ce sont des valeurs retournées par la fonction string.find mais dont on n'a pas besoin. Lien vers le commentaire Partager sur d’autres sites More sharing options...
jjacques68 Posté(e) le 4 mai 2016 Auteur Signaler Partager 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... Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 4 mai 2016 Signaler Partager 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 Lien vers le commentaire Partager sur d’autres sites More sharing options...
jjacques68 Posté(e) le 4 mai 2016 Auteur Signaler Partager 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... Lien vers le commentaire Partager sur d’autres sites More sharing options...
jojo Posté(e) le 4 mai 2016 Signaler Partager Posté(e) le 4 mai 2016 oui, mais je crois que Berale24 t'a trouvé la solution entre temps Lien vers le commentaire Partager sur d’autres sites More sharing options...
jjacques68 Posté(e) le 4 mai 2016 Auteur Signaler Partager 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 !! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Berale64 Posté(e) le 5 mai 2016 Signaler Partager 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); Lien vers le commentaire Partager sur d’autres sites More sharing options...
jjacques68 Posté(e) le 5 mai 2016 Auteur Signaler Partager 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... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Berale64 Posté(e) le 5 mai 2016 Signaler Partager Posté(e) le 5 mai 2016 Oui. C'est ça. Lien vers le commentaire Partager sur d’autres sites More sharing options...
jjacques68 Posté(e) le 5 mai 2016 Auteur Signaler Partager 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 !! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Berale64 Posté(e) le 5 mai 2016 Signaler Partager 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. Lien vers le commentaire Partager sur d’autres sites More sharing options...
mprinfo Posté(e) le 8 mai 2016 Signaler Partager Posté(e) le 8 mai 2016 on peut aussi utilisé une commande lua local difheure = os.difftime(heure2, heure1) Lien vers le commentaire Partager sur d’autres sites More sharing options...
jjacques68 Posté(e) le 8 mai 2016 Auteur Signaler Partager Posté(e) le 8 mai 2016 y a la même chose pour additionner ? genre addtime ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés