Donnée texte (date yyyy-mm-dd) convertie en numérique

Bonjour,
Après pas mal de recherches (mais peut-être pas trouvé la bonne requête de recherche), je rencontre un petit souci dans un virtuel qui semble m’interpréter une donnée de façon erronée.

La commande d’origine est extraite d’un JSON via le plugin-script, définie en « autre » qui est une date au format YYYY-MM-DD (2024-09-23). Je souhaite l’intégrer dans un tableau ‹ virtuel › en associant cette commande à une commande info (également « autre ») de ce ‹ virtuel ›. La donnée d’origine JSON est bien définie entre double-quotes. Mais il ne semble pas s’en soucier.
Or le résultat dans le virtuel n’est pas 2024-09-23 mais 1992 (=2024 - 9 - 23).

j’ai bien essayé quelques bidouilles de calcul en PHP dans la définition du virtuel, un calcul dans les options de la commande script, mais je ne suis pas très au point en PHP…

Y aurait-il un moyen de « forcer » (sur la source ou la destination) pour récupérer cette date comme à l’origine ?

Merci de votre aide

Jacquot73


Informations Jeedom

Core : 4.4.17 (master)
DNS Jeedom : non

Plugin : Virtuel
Version : 2024-08-08 01:19:58 (stable)

Bonjour,

Ca aurait été bien de nous montrer ce que vous aviez fait pour qu’on puisse corriger.

date( « Y-m-d H:i:s », strtotime(#value#))

Je fais cela dans la formule de calcul de la commande donc #value# reprends la valeur mise a jour dans la commande du virtuel

Merci du retour !

Oui, un dessin vaut mieux que des discours :
voici la source :


voici la destination:

Merci pour la formule que je viens d’essayer, en destination et en source. Mais déjà dans la source, cà ne se passe pas top :
image

et là, je retourne à 1961 (areuh!)…

En faisant d’autres vérifs comme le testeur d’expression, le pb a été détecté par virtuel, mais c’est chez script. Voilà ce que donne le testeur :
image
Donc, pas glop la date en clair dans le JSON (source ATMO-AURA). un Timestamp en plus m’aurait bien arrangé…
Autre tentative : récupérer dans script le niveau JSON supérieur pour tenter un json_decode dans la formule de calcul


mais je crois que ça va un peu loin pour moi :stuck_out_tongue:

je reste preneur d’une soluce mais on va se faire un petit python quand j’aurais un peu de temps…

Bonne soirée

Je pense qu’il va falloir scripter un peu

Bonjour,

et si tu transforme directement dans la source en timestamp ?

Source
formule de calcul : strtotime(#value#)
Cible
formule de calcul : date('Y-m-d H:i:s',#value#)

1 « J'aime »

Merci. J’ai aussi essayé suite au retour de Iperenna mais il me converti 1993. j’ai essayé avec la string en dur en remplacement de #value#, dans le doute de mes compétences PHP, et là, j’ai bien le bon timestamp. Donc, #value# est 1993 dans ce cas… Mais on va ressortir le python… Juste pour cette info, le reste est bien parsé. Il semblerait que le retrait des quotes dans les extractions (bien pratiques par ailleurs) est un effet de bord.

Je me colle au python…

suis passé par un script python.

Merci tout de meme : J’ai pu reprendre le strtotime pour d’autres dates extraites de JSON qui n’étaient pas « calculables » : yy-mm-dd h:mm:ss ou en format Z

je clos le ticket