0

我想知道是否有人可以提供帮助,因为我不确定在哪里寻找。

我有一个旧站点,它在我几乎无法控制的共享服务器上运行。我有一个在我的其他站点上运行良好的脚本,并希望将其添加到这个较旧的站点,但是它不能正确显示时间。我所有的其他站点都在 PHP 5+ 上运行,但是这是我现在发现运行 PHP 4.4.8 的旧站点上的第一个 php 脚本。

因此,我已将问题缩小到更大脚本中的函数,并认为这就是不兼容的地方。该代码基本上采用提供的数据并将其转换为天、小时、分钟和秒。

    function time_left ($e_time) {
  $e_time = strtotime($e_time);
  $e_time = substr($e_time, 0, 10);
  $time_stamp = explode("-", date('n-d-Y-H-i-s', $e_time));
  $e_time = mktime($time_stamp[3], $time_stamp[4], $time_stamp[5], $time_stamp[0], $time_stamp[1], $time_stamp[2]);
  $server_time = time();
  $diff_time = ($e_time - $server_time);
  if ($diff_time < 0) $diff_time = 0;
  unset($time_stamp);

  # get days remaining
  $time_stamp[1] = floor($diff_time/60/60/24);
  if($time_stamp[1] <= 0){$time_stamp[1] = "";} else {$time_stamp[1] .= "d ";}

  # get hours remaining
  $time_stamp[3] = floor(($diff_time - $time_stamp[1]*60*60*24)/60/60);
  if($time_stamp[3] <= 0){$time_stamp[3] = "";} else {$time_stamp[3] .= "h ";}

  # get minutes remaining
  $time_stamp[4] = floor(($diff_time - $time_stamp[1]*60*60*24 - $time_stamp[3]*60*60)/60);
  if($time_stamp[4] <= 0){$time_stamp[4] = "";} else {$time_stamp[4] .= "m ";}

  return $time_stamp[1] . $time_stamp[3] . $time_stamp[4];

}

任何人都可以在上面的代码中发现您认为可能与 PHP 4.4 不兼容的任何内容吗?

目前,如果我回显原始时间数据变量,它会以原始形式显示它,但是当它通过上面的函数时,它什么也不显示。正如我所说,我在运行 PHP 5+ 的服务器上对这种编码没有任何问题

非常感谢您的帮助!

*添加

好的,我想我已经隔离了问题所在,那就是 strtotime

strtotime 得到的原始输入是这样的:2013-03-18T21:38:58.000Z

目前因为脚本在 PHP 4.4 下运行,如果我回显这一点:

$e_time = strtotime($e_time);

它总是返回 -124 的值,但我不知道为什么?

4

1 回答 1

2

消除

unset($time_stamp);

这条线。

不知道为什么要在之后立即对其进行操作时取消设置它。希望有帮助

于 2013-03-18T20:32:06.367 回答