【问题标题】:Immitate PHP 5.3 DateTime in PHP 5.2在 PHP 5.2 中模仿 PHP 5.3 DateTime
【发布时间】:2010-11-25 01:10:20
【问题描述】:

我在本地机器上使用 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 小时后。

【问题讨论】:

    标签: php datetime php-5.2


    【解决方案1】:

    这是一个相当完整的 DateTime 5.2 扩展。不过,请查看我对 setTimestamp 的评论以解决您的 time_zone 问题

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

    【讨论】:

      【解决方案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');
          }
      }
      

      【讨论】:

      • 哦,太好了,我没有意识到我可以使用格式来获​​取时间戳!谢谢。
      猜你喜欢
      • 2011-07-20
      • 1970-01-01
      • 1970-01-01
      • 2011-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-17
      • 2012-07-23
      相关资源
      最近更新 更多