在PHP 5.2中模仿PHP 5.3 DateTime

ala*_*and 10 php datetime php-5.2

我在我的本地计算机上使用PHP 5.3中的DateTime对象进行了一些有用的操作但是我的主机(NFS)只运行了5.2并且在5.3.1之前不打算升级.

所以我的问题是,这个代码是否可以使用5.2?具体来说,5.2中不存在DateTime :: getTimestamp

nicetime.php包含类似于http://cz2.php.net/manual/en/function.time.php#89415中的那个,基本上只输出时间戳之前/之前的时间长度)

include('include/nicetime.php');

if(isset($_GET['hour']) && isset($_GET['min']) && isset($_GET['AP']) && isset($_GET['TZ'])){
    if($_GET['AP'] == 'PM'){
        $reqHour = $_GET['hour']+12;
    }else{
        $reqHour = $_GET['hour'];
    }

    $reqHour = ($_GET['AP'] == 'PM' ? $_GET['hour']+12 : $_GET['hour']);
    $reqMin = ($_GET['min'] == 0 ? '00': $_GET['min']);

    date_default_timezone_set($_GET['TZ']); 
    $reqDate = date_create($reqHour.':'.$reqMin);

    echo '<h3>'.nicetime($reqDate->getTimestamp()).'</h3>';
}

?>
Run Code Online (Sandbox Code Playgroud)

如果您想知道它的重点是什么,用户想要知道在一个时区中某个时间段与他们不同的时间.例如,什​​么时候在英格兰的晚上9点?从现在起2个小时.

Øys*_*sen 12

最后一行必须翻译成

echo '<h3>' . $reqDate->format('U') . '</h3>';
Run Code Online (Sandbox Code Playgroud)

为了使用PHP 5.2.除此之外,它看起来很好.

编辑: 您可以子类化DateTime以提供向前兼容的解决方案:

class MyDateTime extends DateTime {
    public function getTimestamp() {
         return method_exists('DateTime', 'getTimestamp') ? 
             parent::getTimestamp() : $this->format('U');
    }
}
Run Code Online (Sandbox Code Playgroud)