我正在将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
真的,他们的医生需要一些帮助。