Comment modifier par code la date de début d'un événement?

Bonjour,
je cherche à pouvoir modifier par scénario la date ( et surtout l’heure) de début de la prochaine occurence d’un évènement. Le nouvel horaire est stocké dans une variable ou une info de virtuel (peu importe).
Grâce au forum, je sais récupérer la date de la prochaine occurence (merci https://community.jeedom.com/t/recuperer-date-debut-et-fin-dun-evenement/14743)
Si quelqu’un peut m’expliquer comment MODIFIER cette date, je l’en remercie d’avance.

Bonjour,

Tu souhaites stocker dans une variable ou un virtuel une information, est ce ta question?
Peux tu montrer les infos que tu arrives a lire?(copie écran)

Bonjour,

Exemple d’un bloc code qui modifie la date de début et de fin d’un événement d’agenda

$tags=$scenario->getTags();
foreach(calendar_event::getEventsByEqLogic(489) as $event) {
    $scenario->setLog($event->getName());
	if ($event->getName()=='Chauffage') {
      $scenario->setLog(date('Y-m-d H:i:s',$tags['#prochain_reveil_start#']));
      $scenario->setLog(date('Y-m-d H:i:s',$tags['#prochain_reveil_end#']));
      $event->setStartDate(date('Y-m-d H:i:s',$tags['#prochain_reveil_start#']));
	  $event->setEndDate(date('Y-m-d H:i:s',$tags['#prochain_reveil_end#']));
      $event->save();
    }
}
1 « J'aime »

Ce que je souhaite, c’est modifier, par scénario, la date de début d’un évènement existant dans un agenda. Par exemple, j’ai un événement qui commence à 5h, je veux l’avancer de 1h, la valeur 1h ayant au préalable été stockée dans une variable par exemple (ça, je sais faire).
Ce que je sais faire également c’est récupérer par bloc code la date/heure du début de l’événement. Dans le bloc code récupéré sur le forum, cette date est stockée également dans une variable. Mon besoin : je veux simplement remplacer la date de début du prochain événement (5h) par la nouvelle valeur calculée (4h) et ça, je ne sais pas comment faire. Est-ce clair pour toi ? Merci d’avance.
Je vais essayer de comprendre ce que m’a envoyé @tomdom et tenter de l’appliquer.

Merci @tomdom . J’essaye de comprendre ton bout de code et je vais l’adapter à mon contexte. Si j’y arrive, je cloturerai le post comme solutionné.

Bonjour,
j’ai testé ton code, mais j’ai un problème pour passer la date de début d’évènement par tag (ce que tu appelles #prochain_reveil_start# dans ton exemple).
Je n’arrive pas à m’en sortir avec les formats de date (j’ai testé de nombreuses solutions, toujours avec le même résultat négatif).
Voici ce que j’ai utilisé pour lancer le scénario que tu as donné:


Le résultat modifie bien la date de début de l’événement, mais il la force au 1er janvier 1970 ! origine des timestamp).
Un peu d’aide serait bienvenue , merci d’avance.

Bonjour,

Si ta date est déjà au format « YYYY-MM-DD HH:MM:SS », alors dans le bloc code, ça doit être :

$event->setStartDate($tags['#prochain_reveil_start#']);

dans mon cas, la date et l’heure étaient au format timestamp (réveil remonté par le téléphone)

Autre remarque, tu n’es pas obligé de passer par un scénario qui appel le scénario testagenda.
Tu peux créer les tag directement dans le scénario qui modifie l’agenda


et ensuite le bloc code

Merci , ta solution fonctionne parfaitement.

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