Bloc code et #time#

Bonjour a tous,

Je cherche a faire une fonction qui permet d’incrémenter/décrémenter la valeur #time# de jeedom au format 816 pour 8h16.
Je ne suis pas un expert en php, mon code fonctionne si je passe une valeur manuellement lors de l’appel de la fonction via un scénario. En revanche si je passe la valeur #time# dans le scénario. Cela ne fonctinne pas, visiblement le problème vient lorsque je veux caster la valeur (string) en int. Auriez-vous une idée ?

 public static function timeAddMinutes($time, $addMin){
    // ligne ajouter juste pour le debug de mon problème
    return $time." - ".gettype($time)." - ".((int)$time)." - ".intval($time);

    $heure = intval($time)/100%24;
    $minute = intval($time) - $heure * 100;
    $currentDate = strtotime($heure.":".$minute);
    $futureDate =  $currentDate + 60 * intval($addMin);

    return date("Hi",$futureDate);
  }

image

avec la ligne de debug on voit que je ne peux pas caster #time# alors que c’est un string qui vaut 804 :
image

Merci

En attendant de réalisé cette fonction plus générique, j’ai fais une fonction qui fait un return en utilisant la fonction time() php (du coup, je peux pas lui passer l’heure manuellement).

return date("Hi", time() + intval($value)*60);

Merci

1 « J'aime »

Bonjour,
Tu veux refaire la fonction time_op ou je n’ai pas compris ?

Fait à 8h28 :
image

Édit : ça fonctionne aussi avec autre chose que #time#
image

Effectivement, je ne connaissais pas cette fonction mais c’est ce que je voulais faire.
Merci je vais l’utiliser.

Maintenant je suis currieux et j’aimerai comprendre pourquoi le #time# passé en variable ne se cast pas. Ais-je ratté quelque chose ?

Essaie en ajoutant ça au début de ta fonction

$time=scenarioExpression::setTags($time);

Effectivement cela fonctionne. Je commence a comprendre la variable arrive dans la fonction n’est pas interprété par jeedom, c’est toujours un tag et lorsque je l’affiche, l’interprétation est réalisé par la suite après le retour. Avec ta ligne, je récupère la valeur du tag pour l’utiliser dans le scénario…

Merci j’ai apris quelque chose, sinon en regardant dans la doc, j’ai bien trouvé la fonction time_op, je cherchais quelque chose avec addMinute et j’ai pas vu cette instruction.

Encore merci @tomdom pour ton aide.

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.