| 
<?php
/**
 * Timestamp class.
 * Intended to handle timestamp and calculate it for different GMT shifts
 *
 * @author   Eugene Panin <[email protected]>
 * @home     http://www.tortuga.pp.ru
 * @package  Timestamp
 * @version  1.0
 * @access   public
 */
 class Timestamp {
 
 /**
 * Timestamp value
 *
 * @var      string Unix timestamp
 * @access   private
 */
 var $_val = '';
 
 /**
 * Local place GMT shift
 *
 * @var      int
 * @access   private
 */
 var $_ls = 0;
 
 /**
 * Remote place GMT shift
 *
 * @var      int
 * @access   private
 */
 var $_rs = 0;
 
 /**
 * Constructor
 *
 * @param string $val Unix timestamp
 * @return object Timestamp
 * @access public
 */
 function Timestamp($val='') {
 if ($val) {
 $this->_val = $val;
 }
 else {
 $this->_val = time();
 }
 }
 
 /**
 * Sets timestamp
 *
 * @param string $val Unix timestamp
 * @return void
 * @access public
 */
 function setValue($val) {
 $this->_val = $val;
 }
 
 /**
 * Returns timestamp
 *
 * @param string $format Format (see strftime)
 * @param int $tps This place GMT shift
 * @param int $rps Remote place GMT shift
 * @return string Unix timestamp
 * @access public
 */
 function getValue($format='') {
 $res = $this->_val;
 if ($this->_ls && $this->_rs) {
 $lsSeconds = $this->_ls*60*60;
 $rsSeconds = $this->_rs*60*60;
 $res = $res + ($rsSeconds-$lsSeconds);
 }
 if ($format) {
 $res = strftime($format,$res);
 }
 return $res;
 }
 
 /**
 * Sets local place timestamp
 *
 * @param string $val Unix timestamp
 * @return void
 * @access public
 */
 function setLocalGMTShift($val) {
 $this->_ls = $val;
 }
 
 /**
 * Returns local place GTM shift
 *
 * @return int GMT shift
 * @access public
 */
 function getLocalGMTShift() {
 return $this->_ls;
 }
 
 /**
 * Sets remote place timestamp
 *
 * @param string $val Unix timestamp
 * @return void
 * @access public
 */
 function setRemoteGMTShift($val) {
 $this->_rs = $val;
 }
 
 /**
 * Returns remote place GTM shift
 *
 * @return int GMT shift
 * @access public
 */
 function getRemoteGMTShift() {
 return $this->_rs;
 }
 
 
 } // class
 ?>
 |