Hello,
J’essaie de comparer deux dates contenues dans des strings qui ont le format décrit dans le titre, mais je n’y arrive pas ![]()
J’ai essayé strtotime mais le format doit être anglais (donc mm et dd inversés) , DateTime::format, strftime, mais je m’en sors pas.
Quel serait votre meilleure idée ?
Ça peut être dans un bloc code ou un bloc SI, pour enchaîner des actions selon le résultat de la comparaison.
Bonsoir,
Que voulez vous comme comparaison : >, <, = ?
Salut,
avec chatgpt . A voir si ça répond à ton besoin.
$string1 = '1/06/25 15:30';
$string2 = '2/06/25 09:00';
$date1 = DateTime::createFromFormat('d/m/y H:i', $string1);
$date2 = DateTime::createFromFormat('d/m/y H:i', $string2);
if ($date1 < $date2) {
$scenario->setLog("date1 est avant date2");
} elseif ($date1 > $date2) {
$scenario->setLog("date1 est après date2");
} else {
$scenario->setLog("Les deux dates sont égales");
}
A priori, il suffirait de remplacer le / par des - pour que strtotime fonctionne correctement avec des dates européennes :
Note: Be aware of dates in the m/d/y or d-m-y formats; if the separator is a slash (/), then the American m/d/y is assumed. If the separator is a dash (-) or a dot (.), then the European d-m-y format is assumed.
strtotime('strtr('01/06/2025 20:25' , '/' , '-')' )
@bonjour oui je veux comparer si l’une est plus récente que l’autre. Donc inférieure ou égale.
Noodom j’ai testé ce scénario mais $date ne renvoie rien
// Récupérer la valeur de la commande
$cmd = cmd::byString('#[Aucun][doctolib][DrGuigui]#');
$valeur = $cmd->execCmd();
$scenario->setLog('valeur: '.$valeur);
// Convertir la chaîne de caractères en objet DateTime
$date = DateTime::createFromFormat('d/m/y
H:i', $valeur);
$scenario->setLog('date: '.$date);
Les logs:
[2025-06-01 20:05:14][SCENARIO] -- Début : Scenario lance manuellement.
[2025-06-01 20:05:14][SCENARIO] - Exécution du sous-élément de type [action] : action
[2025-06-01 20:05:14][SCENARIO] - Exécution du sous-élément de type [action] : code
[2025-06-01 20:05:14][SCENARIO] Exécution d'un bloc code
[2025-06-01 20:05:14][SCENARIO] valeur: 02/06/2025 10:00
[2025-06-01 20:05:14][SCENARIO] date:
[2025-06-01 20:05:14][SCENARIO] Fin correcte du scénario
Oh merci je vais tester ça !
OK, c’est dû au format de ta date qui a 4 caractères pour l’année et non 2.
Il faut remplacer y par Y pour que ça soit bien interprété :
$date = DateTime::createFromFormat('d/m/Y H:i', $valeur);
Et pour ton log de la date, il faut lui donner un format car $date1 est un objet et non plus une string après la transformation par DateTime::createFromFormat.
$string1 = '01/06/2025 10:00';
$string2 = '02/06/2025 10:30';
$date1 = DateTime::createFromFormat('d/m/Y H:i', $string1);
$date2 = DateTime::createFromFormat('d/m/Y H:i', $string2);
$scenario->setLog("date1 = " . $date1->format('Y-m-d H:i:s'));
$scenario->setLog("date2 = " . $date2->format('Y-m-d H:i:s'));
if ($date1 < $date2) {
$scenario->setLog("date1 est avant date2");
} elseif ($date1 > $date2) {
$scenario->setLog("date1 est après date2");
} else {
$scenario->setLog("Les deux dates sont égales");
}
[2025-06-01 20:46:17][SCENARIO] **-- Début :** Scenario lance manuellement.
[2025-06-01 20:46:17][SCENARIO] - Exécution du sous-élément de type [action] : code
[2025-06-01 20:46:17][SCENARIO] Exécution d'un bloc code
[2025-06-01 20:46:17][SCENARIO] date1 = 2025-06-01 10:00:00
[2025-06-01 20:46:17][SCENARIO] date2 = 2025-06-02 10:30:00
[2025-06-01 20:46:17][SCENARIO] date1 est avant date2
[2025-06-01 20:46:17][SCENARIO] Fin correcte du scénario
Bingo ça fonctionne mieux comme ça, j’avance ![]()
Bonjour
Pensez bien à cocher le message qui vous a donné la solution.
Cela permet d’aider aussi la communauté à trouver la solution pour cette demande de comparaison de date ![]()
Merci
belle journée à vous
En complément :
$scenario->setLog("tsdate1 ==> " . $date1->getTimestamp());
$scenario->setLog("tsdate2 ==> " . $date2->getTimestamp());
[2025-06-02 12:46:47][SCENARIO] tsdate1 ==> 1748764800
[2025-06-02 12:46:47][SCENARIO] tsdate2 ==> 1748853000
Ah ouais c’est le strtr qui me manquait pour la substitution de caractères !
Mais bon la solution de noodom fonctionne aussi, maintenant je sais plus quoi cocher
texte en gras
Il y a des gens qui ne sont pas familiarisés avec le codage informatique et qui pourraient trouver trop compliqué de devoir utiliser un bloc code ; ainsi le but est juste de donner une solution pour un scénario Jeedom sans bloc code.
En effet, quand c’est possible je préfère aussi éviter le bloc code quand possible. Mais j’aime bien aussi progresser en programmation ![]()
Bon allez c’est testé et fonctionnel ! Merci à toi !
Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.

