joomla组件开发中的时区问题

joomla的所有组件的日期数据,都统一使用mysql的datetime,输出格式类型于2004-02-12T15:19:21


这种格式好处是在数据库中可以很直观地看到时间,但仅仅只是有这个好处,坏处却一大堆,例如不方便两个日期比较,不方便计算日期之间间隔了多久,总之一切日期运算都很不方便!joomla又是个多语言CMS系统,而datetime这种格式要表达时区概念,必须在mysql的datetime上加上offset,而mysql的datetime则始终是UTC。例如中国的时区是加8小时,那么从数据库中得到的datetime还需要加上8小时,时间才是最准确的。这种换算非常重要,而且也是很容易让人忽略的部分。


以下介绍如何准确地获取与写入时间:

 

<?php
// 获取从数据库中得到的时间并显示
echo JHTML::_('date',$row->datetime , JText::_('DATE_FORMAT_LC2'));

// 录入时间字串,到数据库中查询
$config =& JFactory::getConfig();

// 得到系统时区
$offset = $config->getValue('config.offset');
$jdate = JFactory::getDate('2001-1-2', $offset);
$query .= " AND i.created >= '".$jdate->toMySQL(true)."' ";

// 用当前时间进行查询
$config = &JFactory::getConfig();
$tzoffset = $config->getValue('config.offset');
$date = &JFactory::getDate($row->created, $tzoffset);
posted @ 2012-03-19 21:11  猫之良品  阅读(878)  评论(0编辑  收藏  举报