Bonsoir tout le monde et bonne année
je cale sur un truc tout bête (je pense)
j’ai une date YYYY-MM-DD HH:MM:SS
dans l’info d’un virtuel
et je souhaite dans une autre info retirer un jour à cette date et l’afficher en DD/MM/YYYY
J’ai tout retourné et chatgpt est à côté pour l’application dans un virtuel
Merci d’avance
Hello,
Réponse de ChatGPT
Bonne année à toi aussi
Dans Jeedom, le virtuel ne supporte pas tout PHP directement, mais tu peux utiliser les fonctions date() et strtotime() dans les formules.
Cas de départ
Info source :
YYYY-MM-DD HH:MM:SS
(ex : 2026-01-01 14:30:00)
Objectif :
➜ retirer 1 jour
➜ afficher en DD/MM/YYYY
Formule à mettre dans l’info du virtuel
date('d/m/Y', strtotime(#ID_INFO_SOURCE#.' -1 day'))
Remplace #ID_INFO_SOURCE # par la commande info qui contient ta date.
Exemple concret
Si ton info contient :
2026-01-01 14:30:00
Résultat affiché :
31/12/2025
Variante (si jamais la date est parfois vide)
Pour éviter une erreur :
#[Objet][Virtuel][Info]# != "" ? date('d/m/Y', strtotime(#[Objet][Virtuel][Info]#.' -1 day')) : ""
Points importants
Le -1 day fonctionne parfaitement avec strtotime
L’heure (HH:MM:SS) n’a aucune incidence
Compatible virtuel Jeedom
Si tu veux :
retirer X jours
gérer un timestamp
ou formater autrement (jour de la semaine, etc.)
dis-moi
énorme merci pour ton temps.
mais ça ne fonctionne. pas :
date(‹ d/m/Y ›, strtotime(#[Maison][MAX PRIX JOUR MAX GLOBAL][TEST2]#’ -1 day’))
me retourne vide
la valeur de #[Maison][MAX PRIX JOUR MAX GLOBAL][TEST2]# est 2025-12-31 19:14:58
et le type est bien sur autre (pas binaire, ni numérique)
fleproust:
2025-12-31 19:14:58
sinon juste convertir : 2025-12-31 19:14:58 en 31-12-2025 m’irait aussi car j’ai réussi à soustraire 1 jour mais le format n’est pas en format french
fleproust:
2025-12-31 19:14:58
bsr,
Test ok avec le testeur d’expression :
date('d m Y', strtotime('2025-12-31 19:14:58 -1 day'))
PS: le testeur d’expression n’aime pas ‹ d-m-Y › donc j’ai enlevé les tirets pour tester
Par contre , pour remplacer la date et l’heure en dure par le résultat de #[Maison][MAX PRIX JOUR MAX GLOBAL][TEST2]#, je n’ai pas trouvé d’autres solutions que de passer par un scenario avec un bloc code :
$cmd = cmd::byString('#[Maison][MAX PRIX JOUR MAX GLOBAL][TEST2]#')->execCmd();
$dateModifiee = date('d-m-Y', strtotime($cmd . ' -1 day'));
$scenario->setLog('Nouvelle date (J-1) : ' . $dateModifiee);
merci bcp
comme je ne peux le calculer direct d’un virtuel, j’ai contourné en sauvegardant la date de la veille en variable et en récupérant cette variable si le scenario confirme que la conso de la veille dépasse la conso max sauvegardée également dans un virtuel.
Merci bcp pour ton aide
@fleproust salut et bonne année.
j’avais tenté de me faire un virtuel pour gérer le mode vacances avec des calculs de dates.
si cela peut t’aider
merci bcp
mais je ne comprends pas car
date('d/m/Y', strtotime('+ 1days')
dans un virtuel me donne 0.0014807502467917
je suis bien sur « autre »
je ne comprends pas
fleproust:
date('d/m/Y'
j’ai trouvé !!!
date('d m Y', strtotime('- 1days')
il faut pas mettre les slashs
1 « J'aime »
Bison
Janvier 2, 2026, 11:41
10
Salut,
A toute fin utile si tu veux conserver tes « / » il faut entourer l’expression de guillemets pour que les « / » ne soit pas considérés comme des divisions entre les nombres
"date('d/m/Y', strtotime('+ 1days')"
system
A fermé ce sujet ()
Janvier 3, 2026, 2:25
12
Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.