Un sacré casse tête !

Ce qu'il faut bien retenir, c'est que Joomla stocke toujours SES "datetime" en UTC dans la base de données.

Si vous n'utilisez pas le framework pour les affichages, vous pouvez faire ce que vous voulez, et donc stocker les heure en local ou en UTC.

Pour l’internationalisation, il est clair qu'il vaut mieux tout stocker en UTC et c'est le choix que Joomla a fait.

Voici donc quelques conseil :

  • garder toujours les heures en UTC
  • à l'affichage vous les convertissez en heures locales selon le timezone de l'utilisateur courant
  • pour l'affichage c'est à vous de convertir par exemple : echo JHtml::_('date', $item->date, 'd-m-Y H:i:s');
  • pour le retour si vous utilisez les champs de formulaire, le framework les aura déjà converti du timezone utilisateur en UTC

Attention : 12/09/2017 00:00 sera donc converti, si l'utilisateur est en France en 11/09/2017 22:00, qui n'est plus la même date si vous faites des recherches par date dans la base de donnée.
Donc pensez à convertir aussi vos valeurs de requêtes.

Vous l'aurez compris, si vous n'avez pas besoin des heures, utiliser le type date et non datetime dans votre base de donnée, cela vous évitera des problèmes.