web-dev-qa-db-fra.com

Champ de calendrier affichant une date incorrecte

J'utilise le type de champ Calendrier et je rencontre un résultat étrange. Je passe une date du 23/03/2016 en tant que chaîne et elle indique plutôt le 22/03/2016. Cela est vrai pour toutes les dates que j'ai testées. Ils sont toujours affichés un jour plus tôt que l'entrée que j'ai fournie (par exemple, le 31/05/2016 sera rendu en tant que 30/05/2016). Voici comment je rend le champ:

<?php 
    $myDate = '03/23/2016';
    echo $this->form->getInput('date', null, $myDate);
?>

Et voici le XML pour ce champ:

<field
  description="COM_MYCOMPONENT_FORM_WEBINAR_DATE_DESC"
  format="%m/%d/%Y"
  label="COM_MYCOMPONENT_FORM_WEBINAR_DATE_LBL"
  name="date"
  type="calendar" />

Si j'imprime la date à l'écran, c'est la date correcte. Ce n'est que lorsque je le mets dans le champ calendrier qu'il revient un jour. Une idée de pourquoi cela pourrait se produire et comment je peux le réparer?

6
Zachary Draper

Lorsqu'aucun filtre n'est spécifié pour un champ d'agenda, le système applique automatiquement le filtre "user_utc". Selon la documentation de Joomla!, Ce filtre "calcule la valeur spécifiée en fonction de l'heure de Greenwich, en fonction des paramètres de fuseau horaire de l'utilisateur".

Dans ce cas, aucun ajustement de fuseau horaire n'était nécessaire car la date était déjà dans le fuseau horaire approprié. En tant que tel, le filtre 'user_utc' n'est pas nécessaire. Afin d'éviter Joomla! en utilisant ce filtre, ajoutez simplement un filtre au champ de formulaire qui n'existe pas. Dans ce cas, je n’en ai utilisé aucun:

<field
  description="COM_MYCOMPONENT_FORM_WEBINAR_DATE_DESC"
  filter="none"
  format="%m/%d/%Y"
  label="COM_MYCOMPONENT_FORM_WEBINAR_DATE_LBL"
  name="date"
  type="calendar" />

Cela empêche Joomla! d’ajuster automatiquement le fuseau horaire à la date spécifiée.

5
Zachary Draper