【问题标题】:Joomla Server Time Zone / User Time zone?Joomla 服务器时区/用户时区?
【发布时间】:2014-08-05 11:01:04
【问题描述】:

我将 Joomla 3 服务器时区设置为:亚洲/巴林 (GMT+3) 我使用时区的用户也是 Asia/Bahrain (GMT+3)。

但是,我将数据库时间值存储为时区 UTC,如果此系统安装到其他客户端,我稍后会将其作为时区或 Joomla 服务器时区显示给用户。

比我测试的:

    <?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 时应该 +3 小时

解决我写的问题:

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

a.Joomla 是否忽略了它的时区和用户时区,需要我在任何地方添加时区?joomla 是这样工作的吗?

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

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

【问题讨论】:

    标签: php date datetime joomla


    【解决方案1】:
    <?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
    

    真的,他们的文档需要一些帮助。

    【讨论】:

      【解决方案2】:

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

      更多信息:

      【讨论】:

        【解决方案3】:

        这是答案:使用 JHtml::('date' , ....) 输出

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-09-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-10-28
          • 1970-01-01
          • 2011-06-23
          • 2013-07-17
          相关资源
          最近更新 更多