Selon la documentation JFactory/getDate$tzOffset
la valeur par défaut est 0
. Cependant, l'exemple suivant:
$date_default_offset = JFactory::getDate('now');
echo $date_default_offset->toRFC822(true);
echo "<br />";
$date_zero_offset = JFactory::getDate('now', 0);
echo $date_zero_offset->toRFC822(true);
... donne différentes sorties:
Mon, 13 Oct 2014 18:31:37 +0000
Mon, 13 Oct 2014 19:31:41 +0100
Les deux dates ne devraient-elles pas être identiques? Que devrais-je prendre en compte?
La date réelle est:
echo date("r"); // Mon, 13 Oct 2014 20:40:33 +0200
C'est vrai parce que le serveur est en Espagne (+1 GMT et +1 heure d'été en été).
Le problème posé lors de la tentative d'ajustement d'un module pour tenir compte de l'heure actuelle dans les îles Canaries, devrait être Mon, 13 Oct 2014 19:31:41 +0100
selon l'exemple donné.
J'utilise Joomla! 2.5.27, le fuseau horaire du serveur est défini sur Canary (GMT + 0).
Ouvrez le fichier /libraries/joomla/factory.php
Et recherchez getDate()
fonction:
public static function getDate($time = 'now', $tzOffset = null)
La valeur par défaut du décalage de fuseau horaire ($tzOffset
) Est null
et non 0
. Cela peut être dû à une erreur dans documentation de Joomla ou aux versions antérieures à la 2.5.
Dans Joomla 3, $date_zero_offset = JFactory::getDate('now', 0);
génère une erreur:
DateTime :: __ construct () s'attend à ce que le paramètre 2 soit DateTimeZone, entier donné
Donc, pour les îles Canaries, vous pouvez utiliser ceci:
$date_zero_offset = JFactory::getDate('now', 'Atlantic/Canary');
Cela pourrait être une idée d'obtenir le décalage de votre configuration globale comme ceci:
$date = JFactory::getDate($input='now', 'UTC');
$tz = JFactory::getConfig()->getValue('config.offset');
$date->setOffset($tz);
echo $date->toFormat();
Pour rendre la vie un peu plus facile et avoir moins de code, je suggérerais d'utiliser JHtml::date
echo JHtml::date($input = 'now', 'm/d/Y', false);
J'espère que cela t'aides