簡體   English   中英

在PHP 5.2中模仿PHP 5.3 DateTime

[英]Immitate PHP 5.3 DateTime in 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>';
}

?>

如果你想知道它的重點是什么,用戶想要知道在一個時區中某個時間與他們不同的時間有多長。例如,什​​么時候在英格蘭的晚上9點? 從現在起2個小時。

最后一行必須翻譯成

echo '<h3>' . $reqDate->format('U') . '</h3>';

為了使用PHP 5.2。 除此之外,它看起來很好。

編輯:您可以將DateTime子類化以提供向前兼容的解決方案:

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

這是一個非常完整的DateTime 5.2擴展。 請查看我對setTimestamp的評論來修復你的time_zone問題

https://gist.github.com/SeanJA/349273

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM