web-dev-qa-db-fra.com

Joomla! JFactory :: getDate faux

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 +0100selon l'exemple donné.

J'utilise Joomla! 2.5.27, le fuseau horaire du serveur est défini sur Canary (GMT + 0).

6
pQB

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');
4
Farahmand

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

3
Lodder