Joomla服务器时区/用户时区


Joomla Server Time Zone / User Time zone?

我正在将Joomla3服务器时区设置为:亚洲/巴林(GMT+3(我使用的时区用户也是亚洲/巴林(GMT+3(。

然而,我将时间值存储在数据库中作为时区UTC,稍后我将其显示给用户作为那里的时区或Joomla服务器时区(如果该系统安装到其他客户端(。

比I测试:

    <?php
    $date = new DateTime(null);
    $tz = $date->getTimezone();
    echo $tz->getName();
    ?>

输出:

America/Denver

和,

$jdate = JFactory::getDate( '01:00:00' );
echo $jdate->format('H:i:s');

输出:

01:00:00

而Joomla服务器时区应设置为+3小时

为了解决这个问题,我写了:

$jdate = JFactory::getDate( '01:00:00' , "Asia/Bahrain" );
echo $jdate->format('H:i:s');

a.Joomla是否忽略了它的时区和用户时区,需要我在各处添加时区?joomla是那样工作的吗

c.Joomla服务器时区的影响在哪里

d.如何在不编辑joomla核心的情况下,默认情况下在所有Jdate对象上使用户时区的优先级高于joomla时区

答案如下:使用JHtml::('date',….(输出

https://compojoom.com/blog/entry/how-to-use-jdate

当您调用JFactory::getDate()时,它将构造一个JDate对象,该对象已经考虑了时区。

更多信息:

  • http://docs.joomla.org/How_to_use_JDate
  • http://api.joomla.org/cms-3/classes/JDate.html
  • http://api.joomla.org/cms-3/classes/JFactory.html#method_getDate
<?php
$jdate = JFactory::getDate( '01:00:00' , "Asia/Bahrain" );
echo $jdate->format('H:i:s'); //outputs 01:00:00
echo $jdate->format('H:i:s',true); //outputs 10:00:00 (!!)
//Versus
$jdate = JFactory::getDate( '01:00:00');
$jdate->setTimezone("Asia/Bahrain");
echo $jdate->format('H:i:s'); //outputs 01:00:00
echo $jdate->format('H:i:s',true); //outputs 04:00:00 (correct)
?>

注意格式函数中神奇的第二个参数:

boolean $local = false

还有第三个可选参数(我不知道它能做什么(:

boolean $translate = true

真的,他们的医生需要一些帮助。