Je tente de créer un scénario qui m’enverrait une notification via JeedomConnect lorsqu’une date précise sous ce format : 24/04/2025 à 17:59:15 sera inférieur à 10 jours.
J’ai tenté avec du php, strotime, des substr pour reformater et faire le calcul en format timestamp mais je n’y arrive pas… si vous auriez une idée pour réaliser cela ?
Je précise une chose, la date (qui change plusieurs fois dans l’année) je la récupère dans une commande Info exactement sous ce format :
24/04/2025 à 17:59:15
Après avec un format de ce type qui est fixe, tu peux le convertir en timestamp, puis récupérer le timestamp actuel, soustraire l’un à l’autre et déclencher si la différence entre les deux est inférieure à 60 x 60 x 24 x 10
Merci pour ta solution.
J’ai mis en place avec tes recommandations, il me reste une chose c’est écrire la valeur de différence de jours dans le Tag : DifferenceJours (je sais le faire dans une variable avec setData et cela fonctionne mais pas avec le Tag);
$tags=$scenario->getTags(); // récupération des tag du scénario
$Certif_DateFormat =$tags['#DateCertificatSSL#'];
#Convertion de la date du Certificat SSL au format Timestamp pour calculer
$date = $Certif_DateFormat;
$val = date_parse_from_format("d/m/Y à H:i:s", $date);
$DateCertificatSSLTimestamp = mktime($val['hour'],$val['minute'],$val['second'],$val['month'],$val['day'],$val['year']);
$scenario->setLog(date('Y-m-d H:i:s',$DateCertificatSSLTimestamps));
#Connaitre la différence de temps entre 2 dates
#$scenario->setLog(scenarioExpression::time_diff(date('c'),date('c',$DateCertificatSSLTimestamp),"df",0)); // Écrit un message dans le log du scénario
$DifferenceJours = scenarioExpression::time_diff(date('c'),date('c',$DateCertificatSSLTimestamp),"df",0);
$scenario->setTags("DifferenceJours", $DifferenceJours);
$scenario->setLog('Nombre de jours : ' . $DifferenceJours);
$scenario->setTags($tags); // écriture des tags dans le scénario
#$scenario->setLog(scenarioExpression::time_diff(date('c'),date('c',$DateCertificatSSLTimestamp),"df",0)); // Écrit un message dans le log du scénario
$DifferenceJours = scenarioExpression::time_diff(date('c'),date('c',$DateCertificatSSLTimestamp),"df",0);
Il est préférable d’écrire:
$DifferenceJours = scenarioExpression::time_diff(date('c'),date('c',$DateCertificatSSLTimestamp),"df",0);
#$scenario->setLog($DifferenceJours); // Écrit un message dans le log du scénario
Ca ne fait qu’une seule fois le calcul et ça l’écrit ( ou pas si en commentaire ) dans le log
J’avais doublé le calcul c’était pour voir le résultat dans la log du scénario.
Du coup j’ai fait ça à la place, pour calculer et afficher dans la log du scénario :