Formater une date

Bonjour,

Le Plugin JMQTT me donne une info d’un device sous forme « 2021-01-03T17:53:25.259768753Z ».
j’aimerai pouvoir le transformer en « 03/01/2021 17;53 » directement en utilisant un widget ou en passant par un virtuel.
Je ne trouve pas de widget (cela ne m’etonne pas trop) mais je n’arrive pas faire la conversion en php dans le virtuel.
Quelqu’un aurait-il une solution? La fonction Date ne fonctionne qu’avec un TimeStamp.

Merci

Essaye avec strtotime pour avoir le TimeStamp.

https://www.php.net/manual/fr/function.strtotime.php

ou quelques chose du syle : date('H:i:s', time());
note avec des guillemets à la place de < et >(je n’arrive pas à afficher)

Bonjour a tous,
J’ai eu un truc similaire il y a qques temps,

j’ai bypassé en nettoyant la string et en passant par un DateTime::createFromFormat, du genre

$d =str_replace(array('T','Z'),array(' ',''), "2021-01-03T17:53:25.259768753Z");
$theDate=DateTime::createFromFormat("Y-m-d G:i:s", $d);
1 « J'aime »
date('d/m/Y à H:i:s',strtotime(substr("2021-01-03T17:53:25.259768753Z",0,19)))
2 « J'aime »

Via widget c’est une date en ISO toISOString

C’est assez simple d’extraire l’info et reformater pour ton besoin

(Manque heure et minute mais c’est pareil via get) tu as l’exemple dans le 1er lien

2 « J'aime »

je regarde demain et vous ferais un retour sur mes tests
merci

Roohh tu ne connais pas le bouton </> dans la barre d’outils lors de la rédaction d’un message ?

J’ai édité ton post pour le formater

sur un input date et heure j’ai le même resultat que toi
image
aprés modif du widget info
image


info « essai datetime-local »

<div class="cmd cmd-widget #history#" data-type="info" data-subtype="string" data-template="default" data-cmd_id="#id#" data-cmd_uid="#uid#" data-version="#version#" data-eqLogic_id="#eqLogic_id#">
	<div class="content-xs">
		<span class="cmdName #hide_name#">#name_display# </span> <strong class="state"></strong>
	</div>
	<script>
                function pad(number) {
      if (number < 10) {
        return '0' + number;
      }
      return number;
    }
		jeedom.cmd.update['#id#'] = function(_options) {
			var cmd = $('.cmd[data-cmd_id=#id#]')
			cmd.attr('title','Date de valeur : '+_options.valueDate+'<br/>Date de collecte : '+_options.collectDate)


      		date = new Date(_options.display_value);    
          var result = pad(date.getDate()) +
              '-' + pad(date.getMonth()+1) +
              '-' + date.getFullYear() +
              ' ' + pad(date.getHours()) +
              ':' + pad(date.getMinutes());

          
          cmd.find('.state').empty().append(result)
			if(_options.alertLevel){
				if(_options.alertLevel == 'warning'){
					cmd.addClass('label label-warning')
					cmd.attr('data-alertlevel','warning');
				}else if(_options.alertLevel == 'danger'){
					cmd.addClass('label label-danger')
					cmd.attr('data-alertlevel','danger');
				}else{
					cmd.removeClass('label label-warning label-danger')
					cmd.attr('data-alertlevel','none');
				}
			}
		}
		jeedom.cmd.update['#id#']({display_value:'#state#',valueDate:'#valueDate#',collectDate:'#collectDate#',alertLevel:'#alertLevel#'})
	</script>
</div>

par contre si tu veux réutilisé cette info pour un scénario ou cmd là tu devras passé par du php car ce n’est que le rendu « visuel » qui change et non la valeur

image

1 « J'aime »

Merci, j’adore le cri de rage « Roohh »

1 « J'aime »

C’était plutôt « roooh » pas de rage mais d’étonnement avec un sourire en coin :laughing:
Tu n’as pas vu la différence ?

Je l’avais vu un peu comme le lion de la pub Perrier de 1990, comme ça fait 30ans, j’aide un peu)
Dans mon souvenir c’était pas exactement comme ça, mais bon, le principal est là

1 « J'aime »

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