Formater la sortie NTP TIME (un espace)

Bonsoir à tous, j'ai un peu honte mais je ne trouve pas comment espacer %Y de %H sur une page web. Merci d'avance :slight_smile:

 // NTP TIME ================<
  time_t timestamp = time( NULL );
  char buffer[MAX_SIZE];
  struct tm *pTime = localtime(&timestamp );
  strftime(buffer, MAX_SIZE, "%d/%m/%Y   %H:%M:%S", pTime);
  Serial.println(buffer);
  bufferA=buffer; 
  NOW=bufferA; 
   delay(1000);
  // ========================= ntp >

Tu veux dire espacer de plus d'un espace?
En HTML par défaut les espaces sont réduit à un seul.
Il y a plusieurs façon de faire suivant ce que tu veux vraiment faire. La plus simple serait d'utiliser un <BR>, mais plus vraiment d'actualité car tu ne pourras pas gérer le rendu en fonction du matériel utilisé.

1 Like

Merci beaucoup @terwal mais en fait je ne crois pas que ce soit un souci html puisque la date+heure arrive dans 'buffer'. Hier soir j'étais très fatigué. Je crois que je dois déjà aller voir la librairie concernée. Bonne journée à tous :slight_smile:

j'ai mis une virgule:
"%d/%m/%Y , %H:%M:%S"
ça donne:
29/09/2022 , 13:25:15
Déjà mieux, mais j'aurais aimé ne pas voir la virgule. enfin comme ça c'est déjà plus lisible

Salut.

Sans CSS pas de salut à ma connaissance.
Ajoute ceci après la balise html:

<style>
  p.datetime {
    font-size: 20px;
    word-spacing: 50px;
}
</style>

Ensuite :

  <p class="datetime">29/09/2022 13:46:00</p>

Tu peux faire la même chose avec d'autres balises :

<style>
h2.datetime {
  word-spacing: 50px;
}
</style>

Ensuite :

  <h2 class="datetime">29/09/2022 13:46:00</h2>

Tout dépend comment tu changes de police.

@bohin92fr ca affiche quoi quand tu met un espace à la place de la virgule?

Vous avez essayé avec le code ASCII pour un espace?

strftime(buffer, MAX_SIZE, "%d/%m/%Y\x20%H:%M:%S", pTime);

1 Like

rien. Mais de toute façon sauf erreur ce n'est pas un soucis html puisque le String est formaté dans la fonction de la librairie. J'irai voir ça de près quand j'aurai le temps. Ce n'est pas un souci grave. Merci

Ah merci beaucoup j'essaie ça tout de suite

raté :frowning:

Comment est-ce tu affiches le buffer sur ta page html?

Si ça t'affiche rien, le problème n'est pas au niveau des espace, mais plutôt comme le suggère @mseddougui comment tu affiche ta valeur dans le HTML.

Surtout que ton code n'y fait pas du tout référence.

Non, car le caractère '\x20' est équivalent à un espace, d'un point de vue C.

Éventuellement, si un double espace suffit, utilise les caractères suivants :

&ensp;    espace demi-cadratin
&emsp;   espace cadratin (plus large)

La solution donnée en #5 permet cependant de dimensionner l'espace en pixels à ta convenance.

J'ai mis le buffer dans un char* NOW et envoyé via le script:

                client.print(NOW);  // (= bufferA)    

ESP32-SRV-CAN_D-07-14P.zip (12.3 KB)

Si c'était directement du html, je suis nul mais je sais faire un espace en html :wink: - mais pour la récupération NTP j'ai fait un copié-collé, je ne sais pas comment ça fonctionne.
Le soucis c'est de reformater le String buffer, soit en amont si c'est possible, soit en aval en ajoutant par ex. des nbsp ,mais là je dois revoir comment on se promène dans un string en C :wink: - En tout cas merci beaucoup à tous.

Est-ce que tu peux faire un serial print pour afficher la variable NOW stp?

juste après:

bufferA=buffer;
NOW=bufferA;

oui tout de suite

29/09/2022 , 19:24:39
avec ma virgule en plus.
Je sais que c'est facile les gars, il faut juste que je revoie le cours :wink:
Je savais bien faire ça en au3, je n'ai jamais vraiment développé en C.

Et sans la virgule?

Je me demande si c'est parce que tu es sur ton telephone.... Parce que normalement l'espace devrait etre la!

essaye de mettre ca dans ton code:

 client.print("<p>");
 client.print(NOW);  // (= bufferA)   
 client.print("</p>");

Sinon essaye avec ca :

 client.print("<pre>");       
 client.print(NOW);  // (= bufferA)   
 client.print("</pre>");