Calculer le jour du lendemain

Voilà avec un 2 listes dans un virtuel je vais créer des événements. La première j’ai le choix entre Aujourd’hui et Demain. La seconde entre AM ou PM.

Au final le scénario va utiliser l’action “Ajouter une date” pour un événement donné du plugin Agenda.

Il faut savoir que ce champ attend un string écrit exactement comme cela: AAAA-MM-JJ

Pour Aujourd’hui c’est facile. #annee#-mois#-#jour#

C’est pour Demain que cela se corse. Pour année et mois évidemment pas de problème. Mais pour le calcul du lendemain, il semble (je suis débutant) que se soit une usine à gaz. J’ai d’abord tenté ma chance avec #jour# + 1 et des variantes autour de cela.

Finalement j’ai trouvé cette fonction time_op(#jour#, 1). Problème, elle ne me renvoit pas 17 (on est le 16) mais 017. J’ai donc écrit ltrim(time_op(#jour#, 1)) et ca marche …

… Sauf qu’en début du mois prochain je vais me retrouver avec un seul digit (1, 2, 3,etc). Je ne vais tout de même pas faire un fonction spéciale pour cela (d’autant plus que sorti de visual basic je suis out) en php? il doit y avoir plus simple tout de même?

Merci

Bon je viens de tester substr(time_op(#jour#, 1),-2)
et c’est correct.

Y a mieux?

il faut travailler avec des timestamp, timestamp est un nombre exprimé en secondes depuis une date de référence que l’ont peut convertir selon plein de format disponible…
exemple si l’on prend la date du jour soit un nombre de secondes et que l’on veut le jour suivant, on ajoute (24 * 60 * 60) on converti le tout avec une fonction date(“format”,timestamp);et le tour est jouer
pour les format possible je te laisse regarder la documentation de la fonction date php
https://www.php.net/manual/fr/function.date.php
n’hésite pas a poser des questions si tu est perdu :wink:

Gros merci :slight_smile:

Quelque chose du genre.

date('Y-m-d',strtotime("+1 day"))

Ton truc me renvoie 2002 (non je n’ai pas interverti 0 et 2) dans l’évaluateur d’expression

Je viens d’essayer aussi date(‘YYYY-mm-dd’, strtotime(" +1 day"))

Mais la c’est du n’importe quoi qui sort

Je sais que je suis presque hors sujet mais je pose la question quand même:

Quelle que soit la façon d’arriver au résultat plus haut, il serait bien d’intégrer le résultat à une variable de façon ensuite de pouvoir écrire:

#annee#-#mois#-#MaVariablePourDemain"

J’ai essayé cela mais cela me renvoit litéralement #MaVariablePourDemain"

Je suis un peu perdu par rapport à ma façon habituelle de jouer avec des variables dans d’autres langages. C’est quoi que je n’ai pas compris?

image

pour utiliser une variable dans jeedom il faut ecrire

variable(lenom) toi tu as juste mis lenom !!

Ce n’est pas n’importe quoi, c’est vous qui demandez un format inapproprié. Voir le paramètre format dans la commande date dans le lien fourni par @olive au dessus.

Pour 2002 hier ou 2001 aujourd’hui, c’est le résultat du calcul 2020 -1 -18
image
Si vous voulez un texte il ne faut pas mettre de signe permettant un calcul:
Exemple avec ‘Y m d’ pour le format dans la commande date:
image

c’est juste un effet de bord indésirable du testeur d’expression
en encadrant l’expression de "

“date(‘Y-m-d’,strtotime(”+1 day"))"

on arrive au résultat recherché:

Je vais évaluer : "2020-01-18"
Résultat : 2020-01-18

1 J'aime

Non, cela fonctionne très bien dans un bloc code et ce n’est pas un format inapproprié, il peut choisir le format qu’il veut.
Je dirai que c’est plutôt le “testeur d’expression” qui ne sait pas ou il doit s’arrêter.

$maVar = date('Y-m-d',strtotime("+1 day"));
$scenario->setLog('Valeur : ' . $maVar);
[2020-01-17 09:05:08][SCENARIO] Valeur : 2020-01-18

Je clarifie ma réponse. YYYY-mm-dd est inapproprié pour ce qu’il veut faire

Citation
Bon je viens de tester substr(time_op(#jour#, 1),-2)
et c’est correct.

Pas sur que ce soit correct le denier jour du mois 31/01 --> 32/01 au lieu de 01/02

Super!
Je me lève (décalage horaire oblige) et je trouve toutes ces réponses très intéressantes. Je vais adapter ce que j’ai fait.

Est-ce qu’il y a dans jeedom des notions de variables locales et globales?