我想知道是否有人可以帮助解决这个问题,因为我不知道该去哪看。
我有一个旧网站,它运行在我无法控制的共享服务器上 过度。我有一个在我的其他网站上运行良好的脚本,并希望将其添加到 这个旧网站,但它没有正确显示时间。我所有的 站点在PHP 5+上运行但是这是旧站点上的第一个php脚本 我现在发现运行PHP 4.4.8。
所以我已经将问题缩小到更大的脚本中的函数 认为这是不兼容的地方。代码基本上采用数据 提供并将其转换为天,小时,分钟和秒。
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的值,但我不确定为什么??
答案 0 :(得分:2)
删除
unset($time_stamp);
这一行。
不确定为什么要在之后立即对其进行操作时取消设置。希望有所帮助