我将 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时区?
答案 0 :(得分:1)
答案是:使用JHtml ::('date',....)作为输出
答案 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
真的,他们的文档可以使用一些帮助。