Joomla服务器时区/用户时区?

时间:2014-06-15 12:57:17

标签: php date datetime joomla

我将 Joomla 3 服务器时区设置为:亚洲/巴林(GMT + 3) 我使用时区的用户也是亚洲/巴林(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.is Joomla忽略了它的时区和用户时区,需要我在每个地方添加时区吗?joomla是这样工作的吗?

c.Joomla服务器时区正在影响吗?

d。默认情况下,如果不编辑joomla的核心,如何在所有Jdate对象上优先考虑用户时区而不是joomla时区?

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

当你致电JFactory::getDate()时,它会构建一个JDate对象,该对象已经考虑了时区。

更多信息:

答案 2 :(得分:0)

<?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

真的,他们的文档可以使用一些帮助。