Joomla2.5 JDate 时区日期运算
新版的JDate其实是PHP5内置日期类DateTime的扩展类,所以继承所有DateTime的方法,即可以把JDate当DateTime类来使用。
以下是得到前天的零时例子(PHP > 5.3.0):
$config = JFactory::getConfig(); // 用后台设置的TimeZone创建当前时间的对象 $date = new JDate( 'now' , new DateTimeZone( $config ->get( 'offset' ))); // 减去一天,DateInterval的用法可上PHP官方网查询 $date ->sub( new DateInterval( 'P1D' )); // 用toFormat去掉时分秒,重新创建新对象 $date = new JDate( $date ->toFormat( '%Y-%m-%d' ), new DateTimeZone( $config ->get( 'offset' ))); // format的第二参数决定是否使用TimeZone,否则会以UTC来输出 echo $date ->format(JText::_( 'DATE_FORMAT_LC2' ), true); |
// 日期也可以用JHTML输出
echo JHTML::_('date', <data>, JText::_('DATE_FORMAT_LC2'));
以上代码可表现JDate更加对象化,而且和原生PHP5特征联系得更紧密。不过也许对于惯于使用timestamp进行运算的人来说会觉得很别扭。下面写一个timestamp的运算例子:
$config = JFactory::getConfig(); // 用toUnix得到timestamp再减去一天的秒数 $date = new JDate( 'now' , new DateTimeZone( $config ->get( 'offset' ))); $date ->setTimestamp( $date ->toUnix()-3600*24); // PHP > 5.3.0 $date = new JDate( $date ->toUnix() - 3600*24); // PHP > 5.2.0 echo $date ->format(JText::_( 'DATE_FORMAT_LC2' ), true); |